摘 要: 介紹一種結(jié)合刻面分類描述和本體語(yǔ)義的類庫(kù)管理和檢索方法,通過(guò)刻面分類描述機(jī)制和本體的語(yǔ)義擴(kuò)展與推理能力,有效地對(duì)類進(jìn)行存儲(chǔ)和管理,方便用戶快捷準(zhǔn)確地從類庫(kù)中尋找適合自己需要的類,從而更好地達(dá)到軟件復(fù)用的目的。
關(guān)鍵詞: 類庫(kù);軟件復(fù)用;刻面分類;本體
軟件復(fù)用是提高軟件生產(chǎn)力和質(zhì)量的一種重要技術(shù),已被視為是解決軟件危機(jī)、提高軟件生產(chǎn)率和質(zhì)量的現(xiàn)實(shí)可行途徑。目前研究最多的是基于軟構(gòu)件的復(fù)用,或稱之為基于構(gòu)件的軟件工程(CBSE)。而要實(shí)現(xiàn)CBSE,其最根本的問(wèn)題是要有可用的軟構(gòu)件。完整的構(gòu)件庫(kù)是實(shí)現(xiàn)CBSE的關(guān)鍵,但各個(gè)開(kāi)發(fā)者或開(kāi)發(fā)機(jī)構(gòu)要?jiǎng)?chuàng)建各自的、絕對(duì)完整的構(gòu)件庫(kù)是不可能的,或在經(jīng)濟(jì)上與時(shí)間上是不可行的。
面向?qū)ο蠓椒ú粌H為軟件復(fù)用的實(shí)現(xiàn)提供了內(nèi)在的結(jié)構(gòu)性支持,也通過(guò)類庫(kù)的類而直接支持代碼復(fù)用。當(dāng)前,許多面向?qū)ο箝_(kāi)發(fā)工具都建立了自己的類庫(kù),類庫(kù)所起的作用越來(lái)越重要。類庫(kù)已成為一種現(xiàn)成的、寶貴的可復(fù)用的軟件資產(chǎn)。
但是,類和軟構(gòu)件是有區(qū)別的,類庫(kù)也不是一般的軟構(gòu)件庫(kù)。目前大部分的類庫(kù)管理系統(tǒng)都存在一些問(wèn)題,如只能通過(guò)瀏覽導(dǎo)航的方式查找類,這限制了程序開(kāi)發(fā)員快速、準(zhǔn)確、高效地檢索出所需的類。
本文介紹一個(gè)結(jié)合刻面分類描述和本體語(yǔ)義的類庫(kù)管理和檢索方法,通過(guò)刻面分類描述機(jī)制和本體的語(yǔ)義擴(kuò)展及推理能力,有效地對(duì)類進(jìn)行存儲(chǔ)和管理,方便用戶快捷準(zhǔn)確地從類庫(kù)中尋找適合自己需要的類,從而更好地達(dá)到軟件復(fù)用的目的。主要內(nèi)容有:給出一個(gè)合適的刻面模型對(duì)類進(jìn)行不同維度的描述;XML在刻面分類描述中的應(yīng)用;在刻面分類的基礎(chǔ)上建立本體庫(kù),用來(lái)表示類的整個(gè)分類體系,以及基于刻面分類和本體的檢索方法。
目前國(guó)內(nèi)外對(duì)類庫(kù)的改進(jìn)研究有:呂楓華等人提出的基于類相似性比較的類庫(kù)檢索方法,著重討論了比較類相似程度的近似度量方法,及其在類庫(kù)檢索中的應(yīng)用,并且給出了一個(gè)行之有效的基于規(guī)則的類庫(kù)檢索工具[1]。葉青青等人提出的基于語(yǔ)義與句法的Java類庫(kù)檢索方法,使得開(kāi)發(fā)者可以使用自然語(yǔ)言描述待開(kāi)發(fā)軟件的功能語(yǔ)義,提高可復(fù)用類庫(kù)查詢的精度[2]。徐正權(quán)等人提出的新的Softstore軟件庫(kù)系統(tǒng)模型[3],其主要思想是利用相對(duì)比較成熟的Internet以及數(shù)據(jù)庫(kù)管理技術(shù),對(duì)軟件資源進(jìn)行有效管理。
1 類庫(kù)的刻面分類與描述
類的整體說(shuō)明信息包括類的語(yǔ)義信息和類的關(guān)系信息。類的語(yǔ)義信息包括類名、屬性、服務(wù)、所屬類型、所屬開(kāi)發(fā)階段等信息。類的關(guān)系信息包括類與其他類的關(guān)系信息。
在類庫(kù)中,每個(gè)元素都是一個(gè)類,這些類由屬性和作用于屬性之上的操作構(gòu)成。屬性可以分為靜態(tài)屬性和動(dòng)態(tài)屬性。靜態(tài)屬性屬于所有對(duì)象的全體,意味著不存在該類的對(duì)象,靜態(tài)屬性也是存在的;動(dòng)態(tài)屬性隨著對(duì)象的存在而存在,隨對(duì)象的改變而改變。操作也可以分為靜態(tài)操作和動(dòng)態(tài)操作。兩者不同之處在于靜態(tài)操作可以不存在操作的主體,而動(dòng)態(tài)操作必須要有操作的主體,即發(fā)起者。
類與其他類之間具有幾種不同的關(guān)系[4]。
(1)繼承關(guān)系。在繼承關(guān)系中子類自動(dòng)繼承父類的屬性和方法,子類依賴父類而存在,如果單獨(dú)復(fù)用子類,而忽略了其父類,必然會(huì)導(dǎo)致信息的不完整,而出現(xiàn)復(fù)用錯(cuò)誤。所以,作為依賴方的子類入庫(kù)時(shí),需要同時(shí)保存父類的信息以及它們之間的繼承關(guān)系。
(2)聚合關(guān)系。當(dāng)整體和部分的關(guān)系緊密時(shí),整體不能缺少部分,所以作為依賴方的整體入庫(kù)時(shí),需要同時(shí)保存部分類的信息和它們之間的聚合關(guān)系。
(3)實(shí)例連接關(guān)系。一般通過(guò)對(duì)象的屬性來(lái)表示一個(gè)對(duì)象與另一個(gè)對(duì)象之間的依賴關(guān)系。一般來(lái)說(shuō),該關(guān)系并不影響對(duì)象作為獨(dú)立存在的類入庫(kù)。
(4)消息連接。即所謂的類與類之間的合作關(guān)系。消息連接具有很強(qiáng)的依賴性。一方要通過(guò)調(diào)用另一方的服務(wù)來(lái)實(shí)現(xiàn)本身所提供的服務(wù),如果缺少對(duì)方的支持,則本身無(wú)法完成相應(yīng)的服務(wù)。因此作為依賴方的調(diào)用類入庫(kù)時(shí),需要同時(shí)保存被調(diào)用類的復(fù)用信息以及它們之間的合作關(guān)系。
通過(guò)以上幾種關(guān)系的分析可知,依賴性在各個(gè)關(guān)系中普遍存在。如果一個(gè)類不能單獨(dú)存在,必須依賴其他類存在并得以保持其完整性,則需要將被依賴類和依賴類以及它們之間的關(guān)系同時(shí)入庫(kù)保存。
本系統(tǒng)用刻面分類表示類本身的信息,類與其他類之間的關(guān)系則通過(guò)本體描述。
根據(jù)刻面分類描述的精簡(jiǎn)、一致性、全面性、刻面正交性、易于理解的原則,選擇以下刻面和子刻面:
類的基本信息:類的ID、名稱、版本,類的入庫(kù)時(shí)間等。
類的功能:操作、操作對(duì)象、操作描述等。
類的應(yīng)用環(huán)境:開(kāi)發(fā)語(yǔ)言、硬件環(huán)境、操作平臺(tái)、數(shù)據(jù)庫(kù)平臺(tái)等。
類的應(yīng)用領(lǐng)域:類的具體應(yīng)用范疇。
類的刻面分類與術(shù)語(yǔ)示例如表1所示。
用類的刻面信息建立類庫(kù)的刻面模型,使用XML語(yǔ)言進(jìn)行描述,同時(shí)在類入庫(kù)的時(shí)候,根據(jù)用戶所提交的信息,自動(dòng)生成XML文檔。例如DBconnect類的刻面信息:
<?xml?version?=“1.0”?encoding?=“GB2312”?standalone=“yes”??>
<?XML-stylesheet?type=“text/xsl”?href=“yxfqust.xsl”??>
<!-- class faceted information-->
<?xml version=“1.0”?>
<Class>
<!-- basic information -->
<BasicInfo>
<ID>001</ID>
<Name>DBConnect</Name>
<Version>1.0</Version>
<Provider>sun</Provider>
<EnrollTime>2000-01-01</EnrollTime>
</BasicInfo>
<!-- application platform -->
<ApplicationPlatform>
<DL>Java</DL>
<Database>mysql,sqlserver</Database>
<system>windows,linux</system>
</ApplicationPlatform>
<!-- application domain -->
<ApplicationDomain>information system</ApplicationDomain>
<!-- operation information -->
<OperationInfo>
<Operation>connect to database </Operation>
<OperationOn>database</OperationOn>
<OperationDesc>connect to database in different ways</OperationDesc>
</OperationInfo>
</Class>
從具體問(wèn)題的需求出發(fā),XML具有如下的突出優(yōu)點(diǎn)[5]:
(1)可讀性。用XML描述對(duì)于任何用戶或是計(jì)算機(jī)程序來(lái)說(shuō),都容易閱讀和處理。
(2)XML的自描述性使得客戶端在收到數(shù)據(jù)的同時(shí)也能理解數(shù)據(jù)的邏輯結(jié)構(gòu)和含義,從而能直接對(duì)這些自描述的XML文件中的數(shù)據(jù)進(jìn)行操作,增強(qiáng)了檢索的語(yǔ)義和作用。
(3)表示的獨(dú)立性和內(nèi)容的獨(dú)立性帶來(lái)的靈活性。內(nèi)容與表示的分離,支持用戶界面?zhèn)€性化。表示和操作的分離,支持不同數(shù)據(jù)源的無(wú)縫連接。
(4)強(qiáng)大的表達(dá)能力。無(wú)論是何種數(shù)據(jù)源,新的、老的,是否異構(gòu),XML都可以用統(tǒng)一的模式進(jìn)行描述和訪問(wèn)。
(5)可擴(kuò)展性。XML可以在不破壞現(xiàn)有結(jié)構(gòu)和系統(tǒng)的情況下增加新的數(shù)據(jù)字段,不影響新老客戶端的使用。
XML的這些特點(diǎn)可以為使用者在需要訪問(wèn)不同的源類庫(kù)時(shí)提供標(biāo)準(zhǔn)的統(tǒng)一接口。
檢索采用XML樹(shù)的索引技術(shù)和模型匹配檢索算法[6-8]。
一個(gè)刻面描述可以展開(kāi)成為一棵刻面描述樹(shù),而XML文檔的數(shù)據(jù)結(jié)構(gòu)就是樹(shù)狀結(jié)構(gòu)。對(duì)一個(gè)刻面描述方案,可以將其中的刻面和子刻面分別映射為樹(shù)中對(duì)應(yīng)的父節(jié)點(diǎn)和子節(jié)點(diǎn),對(duì)采用某個(gè)刻面描述方案描述的類,可以將其對(duì)應(yīng)的刻面描述術(shù)語(yǔ)映射為對(duì)應(yīng)的葉子節(jié)點(diǎn)。
對(duì)于類的查詢也可以相應(yīng)地表示為一棵查詢樹(shù),即將查詢中出現(xiàn)的刻面名和子刻面名轉(zhuǎn)化為對(duì)應(yīng)的父節(jié)點(diǎn)和子節(jié)點(diǎn),將查詢刻面的術(shù)語(yǔ)值轉(zhuǎn)化為葉子節(jié)點(diǎn),并且用一個(gè)虛擬的根節(jié)點(diǎn)將它們組合成為一棵查詢樹(shù)。因此,對(duì)于類的檢索就轉(zhuǎn)化為查詢樹(shù)與庫(kù)中類的刻面描述樹(shù)之間的匹配。
用戶在客戶端輸入查詢條件后,由服務(wù)層中的元數(shù)據(jù)服務(wù)組件負(fù)責(zé)根據(jù)用戶查詢條件生成X-Query查詢語(yǔ)句,并進(jìn)行同義詞與近義詞處理。然后將生成的X-Query查詢語(yǔ)句通過(guò)數(shù)據(jù)訪問(wèn)接口的查詢解釋器分解查詢請(qǐng)求,按照數(shù)據(jù)映射提供的存儲(chǔ)規(guī)則與對(duì)象合成器交互,使用XML數(shù)據(jù)的無(wú)序樹(shù)匹配的松弛匹配技術(shù)進(jìn)行檢索。
2 建立本體表示類庫(kù)中類的依賴性關(guān)系
前面的分析指出類庫(kù)中的類普遍存在依賴性關(guān)系,這些依賴性關(guān)系具有很強(qiáng)的語(yǔ)義信息,例如繼承、某些類不能單獨(dú)存在必須依賴其他類而存在才得以保持其完整性等。這里引入本體的主要目的為:(1)利用本體描述類之間的關(guān)系;(2)通過(guò)本體擴(kuò)展類庫(kù)的刻面分類描述體系,利用本體具有的良好的概念層次結(jié)構(gòu)和對(duì)邏輯推理的支持,實(shí)現(xiàn)基于語(yǔ)義上的匹配檢索,從而提高查全率和查準(zhǔn)率。
本體不僅可以描述類與類之間的各種關(guān)系及刻面術(shù)語(yǔ)之間的同義詞和上下文關(guān)系,還可以描述刻面術(shù)語(yǔ)之間所具有的其他各種關(guān)系,從而盡量從語(yǔ)義上來(lái)建立類信息的全面描述。
(1)概念類。概念類表示特定領(lǐng)域中的一組或一類實(shí)體,每個(gè)概念的不同特點(diǎn)可以由不同的屬性描述。如工作描述、功能、行為。語(yǔ)義上講,它表示的是對(duì)象的集合。
(2)公理是表示某一個(gè)特定領(lǐng)域內(nèi)的一些永真式,用來(lái)描述和解釋元素及其元素之間的關(guān)聯(lián)和約束問(wèn)題。
(3)關(guān)系代表概念類之間的關(guān)系,形式上定義為n維的笛卡爾乘積的子集。基本關(guān)系是類的層次關(guān)系,即所謂的繼承關(guān)系。除此之外,還有連接關(guān)系,連接關(guān)系表示除了上下位關(guān)系之外的其他關(guān)系。具體關(guān)系如表2所示。
(4)實(shí)例代表元素。從語(yǔ)義上可以理解為對(duì)象。
本體的表示采用基于Web的本體描述語(yǔ)言O(shè)WL。OWL能夠用于清晰地表達(dá)詞匯表中詞匯以及詞匯之間的本體關(guān)系。用戶需要借助本體查詢語(yǔ)言來(lái)對(duì)本體進(jìn)行利用。本體查詢語(yǔ)言作為應(yīng)用程序使用本體的一個(gè)接口。
本體的開(kāi)發(fā)使用由HP實(shí)驗(yàn)室研究開(kāi)發(fā)的基于Java的開(kāi)放源代碼Jena。選擇Jena的理由是:它為解析RDF、RDFS、OWL和SPARQL提供了一個(gè)編程環(huán)境和一個(gè)基于規(guī)則的推理引擎;Jena允許將數(shù)據(jù)保存到硬盤或OWL文件或關(guān)系數(shù)據(jù)庫(kù)中;Jena的推理機(jī)制支持在創(chuàng)建模型的時(shí)候?qū)⑼评頇C(jī)與模型相關(guān)聯(lián),能實(shí)現(xiàn)基于規(guī)則的推理。
對(duì)OWL處理而言,語(yǔ)義邏輯的處理才是推理機(jī)制的實(shí)現(xiàn)。Jena提供的OWL支持包括:方便地訪問(wèn)標(biāo)準(zhǔn)OWL的類和屬性;支持多種版本的OWL規(guī)范;在基本的查詢中通過(guò)subClassOf這樣的關(guān)系來(lái)實(shí)現(xiàn)類的層級(jí)訪問(wèn)和使用。
對(duì)于類庫(kù)檢索,本體庫(kù)中關(guān)系的重要意義在于支持語(yǔ)義推理和擴(kuò)展查詢,以提高查全率和查準(zhǔn)率。要進(jìn)行基于本體的類庫(kù)檢索,首先應(yīng)該建立一個(gè)本體庫(kù),針對(duì)類庫(kù)進(jìn)行分析和抽取概念:類庫(kù)、類、類的基本信息、類的刻面信息、類的接口信息、刻面、術(shù)語(yǔ)等。同時(shí)分析概念與概念之間的關(guān)系。
用OWL語(yǔ)言來(lái)描述類庫(kù)本體可在描述邏輯的基礎(chǔ)上建立概念分類層次,然后定義概念類的屬性和創(chuàng)建類的實(shí)例。
首先確定本體所包含的概念和概念的層次,如類庫(kù)中出現(xiàn)的概念包括以下幾個(gè)實(shí)體:Library、Class、Facet、Terms等。
可以用OWL語(yǔ)言定義如下:
(1)OWL的概念通過(guò)owl:Class定義。
<owl: Class rdf:ID=”Library”>
<rdfs: label>類庫(kù)</rdfs:label>
</owl: Class>
(2)概念之間的繼承關(guān)系可以用<rdfs:subClassOf>表示。如功能刻面是刻面的一個(gè)子概念:
<owl: Class rdf: ID=”OperationFacet”>
<rdfs: label>功能刻面</rdfs:label>
<rdfs: subClassOf rdf resource=”#Facet”>
</owl: Class>
(3)定義概念的屬性。屬性是一個(gè)二元的關(guān)系。OWL定義了兩種屬性,即owl:Datatype Property和owl:Object Property。前者是概念的成員和數(shù)據(jù)類型,后者是不同概念之間的關(guān)系。如定義一個(gè)DatatyperProperty屬性的className:
<owl: DatatypeProperty rdf: ID=“className”>
<rdfs: domain rdf: resource=“Class”>
<rdfs: range rdf: resource=“&xsd;string”>
</owl: DatatypeProperty>
下面定義一個(gè)ObjectProperty屬性的containClass:
<owl: ObjectProperty rdf: ID=”containClass”>
<rdfs: domain rdf resouce=“#Library”/>
<rdfs: range rdf:resource=“#Class”>
</owl: ObjectProperty>
(4)傳遞性TransitiveProperty
對(duì)稱性SymmetricProperty、自反性Inverseof、等價(jià)傳遞性InverseFunctionalProperty。
(5)定義類與類之間的等價(jià)關(guān)系
<owl:InverseFunctionalProperty rdf:ID=”equals”>
<owl:inverseOf rdf:resoure=”#equals”/>
<rdfs:domain rdf:resource=”#class1”>
<rdfs:range rdf:resoure=”#class2”/>
<rdf type rdf:resource=http://www.w3.org/2002/07/owl#TransitiveProperty/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#ObjectProperty”/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#SymmetricProperty”/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#FunctionalProperty”/>
Owl可以用來(lái)定義和表示類與類、類與屬性之間豐富的語(yǔ)義關(guān)系。在面向?qū)ο笾蓄惻c類之間的關(guān)系是確定的,如繼承、依賴、聚合等。
本體庫(kù)的建立是相當(dāng)麻煩的,如果能夠在軟件設(shè)計(jì)過(guò)程中抽取本體,則以后本體的建立會(huì)節(jié)省不少的時(shí)間。目前,將面向?qū)ο蟮乃枷肱c本體建模的思想相結(jié)合得到了一定的研究,這些研究成果對(duì)領(lǐng)域本體的構(gòu)建有一定的推進(jìn)作用。例如參考文獻(xiàn)[9]給出的一種從UML類圖到OWL映射方法。
3 加入本體后的類庫(kù)檢索
在進(jìn)行檢索時(shí),首先利用本體知識(shí)對(duì)檢索條件進(jìn)行預(yù)處理,對(duì)檢索條件進(jìn)行加強(qiáng)與擴(kuò)展,然后檢索引擎用處理后的條件進(jìn)行檢索,將得到更符合用戶需求的返回結(jié)果。利用本體含有的語(yǔ)義信息檢索出語(yǔ)義上匹配的類。
基于本體描述的類庫(kù),可以分作三層:最底層為數(shù)據(jù)服務(wù)層,存放刻面描述完畢的類實(shí)體,實(shí)現(xiàn)對(duì)類的存儲(chǔ),包括本體庫(kù)和XML數(shù)據(jù)庫(kù)等;中間層為功能應(yīng)用層,包括本體的推理檢索模塊,數(shù)據(jù)訪問(wèn)等功能,主要采用組件開(kāi)發(fā)技術(shù)來(lái)完成功能;最外層是表示層,負(fù)責(zé)與用戶的交互及為用戶顯示界面和提供一個(gè)可視化的瀏覽接口。如圖1所示。
實(shí)現(xiàn)采用MVC架構(gòu)的Struts。
本體的查詢模塊通過(guò)Jena提供的推理機(jī)接口,利用同義、上下位和語(yǔ)義關(guān)系,或者第三方推理機(jī)推理出隱含的語(yǔ)義,從而使得查詢得以擴(kuò)展。利用Owl本體概念的描述邏輯進(jìn)行相關(guān)和相近概念的推理運(yùn)算。
(1)用戶通過(guò)查詢界面輸入查詢條件。
(2)生成初始查詢,如分詞、關(guān)鍵詞匹配。
(3)查詢擴(kuò)展。對(duì)初始查詢進(jìn)行語(yǔ)義擴(kuò)展,然后把擴(kuò)展后的術(shù)語(yǔ)集通過(guò)查詢界面顯示給用戶。本體擴(kuò)展包括以下幾種類型:同義擴(kuò)展、層次擴(kuò)展、屬性擴(kuò)展、公理擴(kuò)展和規(guī)則擴(kuò)展。返回的術(shù)語(yǔ)集包括術(shù)語(yǔ)之間的關(guān)系以及相應(yīng)的解釋。
(4)細(xì)化:用戶根據(jù)返回的術(shù)語(yǔ)集進(jìn)一步明確自己的需求。
(5)執(zhí)行查詢和返回查詢結(jié)果,同時(shí)考慮將檢索結(jié)果按照查詢匹配度進(jìn)行排序。
4 實(shí)驗(yàn)評(píng)測(cè)
環(huán)境和工具:Tomcat服務(wù)器,Eclipse開(kāi)發(fā)平臺(tái),Protégé,sql server2000數(shù)據(jù)庫(kù),Jena推理機(jī),Java類庫(kù)中的資源。
類庫(kù)常規(guī)關(guān)鍵詞檢索方法與本系統(tǒng)檢索方法的效率對(duì)比,如表3所示。
類作為面向?qū)ο笤O(shè)計(jì)中的重要元素,為軟件復(fù)用的實(shí)現(xiàn)提供了良好的條件。為了改進(jìn)現(xiàn)有的類庫(kù)檢索不方便、效率低等問(wèn)題,本系統(tǒng)在刻面描述的基礎(chǔ)上,結(jié)合本體語(yǔ)義檢索的思想,較好地解決了傳統(tǒng)的類庫(kù)檢索方法無(wú)法真正理解用戶的檢索意圖,以及查全率和查準(zhǔn)率相對(duì)差的缺點(diǎn),用戶可方便快捷地從類庫(kù)中尋找適合自己需要的類,從而更好地達(dá)到軟件復(fù)用的目的。下一步工作將是實(shí)現(xiàn)類庫(kù)中的類的刻面自動(dòng)分類和本體信息提取。
參考文獻(xiàn)
[1] 呂楓華,王和珍,費(fèi)翔林.類相似性的比較及其在類庫(kù)檢索中的應(yīng)用[J].軟件學(xué)報(bào),1997,8(4):278-282.
[2] 葉青青,江水.基于語(yǔ)義與句法的Java類庫(kù)檢索方法與系統(tǒng)[J].計(jì)算機(jī)工程,2004,30(23).
[3] 徐正權(quán).類庫(kù)系統(tǒng)研究及其與軟件庫(kù)的融合[J].計(jì)算機(jī)與數(shù)字工程,2007,38(6):67-69.
[4] 張文娟.面向?qū)ο筌浖_(kāi)發(fā)工具集中類庫(kù)和模型庫(kù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002,28(3).
[5] 余金山.基于XML,Tamino和CORBA的軟構(gòu)件管理與檢索技術(shù)[J].華僑大學(xué)學(xué)報(bào),2008,29(4):518-521.
[6] MICHIELS P. MIHAILA G A. SIMEON J. Put a tree pattern in your algebra[C]. IEEE 23rd International Conference on Data Engineering, 2007. ICDE 2007. IEEE 2007: 246-255.
[7] 徐如志,錢樂(lè)秋,程建平,等.基于XML的軟件構(gòu)件查詢匹配算法研究[J].軟件學(xué)報(bào),2003,14(7).
[8] 張海龍,彭鑫.基于刻面與本體的資源描述與檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(9).
[9] 劉振中,劉勇.基于UML類圖的OWL本體映射方法[J].計(jì)算機(jī)工程,2009,35(13):40-45.