專利名稱:一種基于本體的建筑領域知識查詢方法
技術領域:
本發(fā)明屬于知識管理技術領域,特別涉及一種基于本體的建筑領域知識查詢方 法。
背景技術:
近年來,知識管理已成為企業(yè)界和學術界關注的熱點。工程咨詢(監(jiān)理)企業(yè)主要 利用監(jiān)理人員的專業(yè)知識和經(jīng)驗為業(yè)主提供高智能的技術服務,使建設方能順利實現(xiàn)工程 建設項目的目標。監(jiān)理服務質量的高低主要取決于項目監(jiān)理班子成員的綜合素質與經(jīng)驗, 而這些素質和經(jīng)驗就是知識管理主要對象——隱性知識所在。由此可以看出知識管理研究 的必要性,通過知識管理將極大地提高監(jiān)理企業(yè)的服務質量和工作效率,通過提高企業(yè)內 部的核心知識和技術的儲備增強企業(yè)的核心競爭能力。然而目前實施知識管理所存在的主要問題之一是缺乏有效的工具和方法?;诒?體技術下的知識地圖描述了組織內的知識資源情況并貫穿于知識轉化周期的整個過程,被 認為是一種有效的知識管理工具。如今,國內相關領域對知識地圖有了一定的理論研究,然 而在實踐層面以及構建知識地圖的技術方法路線上,完善成功的先例較少。
發(fā)明內容
本發(fā)明的目的,是提供一種基于本體的建筑領域知識查詢方法。該方法首先構建 基于本體的建筑知識地圖,解決現(xiàn)有知識平臺查詢檢索中存在的一些問題,如無法進行知 識快速定位和準確導航、無法顯示知識及專家之間的相互關系、無法支持模糊查詢進而滿 足用戶對于查準率和查全率的要求。本發(fā)明的技術方案是一種基于本體的建筑領域知識查詢方法,包括以下步驟根據(jù)建筑領域內概念結構圖構建本體,包括構建最上層概念;根據(jù)建筑領域內的概念和概念關系圖構建關系;用OntModel來操作本體,從指定的本體文件將本體讀入內存;根據(jù)概念的OntClass,查詢該概念的所有實例的本體名稱;查詢實例和實例相關的關系及關系對應的實例值;查詢概念的父類、子類。本發(fā)明基于信息技術,利用本體技術構造地圖,可將知識庫中的各類知識資源中 的信息與知識關聯(lián)起來,使之成為一個個知識網(wǎng)絡,而本體技術可以建立起統(tǒng)一的結構以 保證每個知識網(wǎng)絡之間的互操作性。作為知識管理的重要應用,知識地圖采用形象、直觀的 方式為用戶提供服務,而本體則通過明確、規(guī)范的概念體系和關系網(wǎng)絡為知識地圖的構建 與維護提供堅實基礎?;诒倔w的包括建筑領域知識的工程咨詢(監(jiān)理)企業(yè)知識地圖構 建方法不但能提供知識導航和檢索,還可以促進內部知識的共享和交流,實現(xiàn)知識創(chuàng)新。
圖1為本發(fā)明知識地圖總體技術方案示意圖。圖2為本發(fā)明中項目類型類的示例圖。圖3為本發(fā)明中所形成的主體結構類示例圖。圖4為本發(fā)明中所形成的知識地圖模型圖。圖5是本發(fā)明的技術方案的查詢方法的步驟流程圖。
具體實施例方式本發(fā)明的一種基于本體的建筑知識地圖的構建方法,如見圖1,所述方法的具體步 驟如下第一步領域本體構建建立工程咨詢(監(jiān)理)企業(yè)的知識地圖,首先必須充分研究分析工程咨詢(監(jiān)理) 企業(yè)的知識構成、知識來源。確定本體應用的目的和范圍,列舉工程咨詢(監(jiān)理)企業(yè)領域 知識中重要的術語和概念;建立工程咨詢(監(jiān)理)領域知識本體框架,評估其中的概念,用 關鍵性術語精簡的表達出該領域的知識,形成一個領域知識的框架體系;定義工程咨詢監(jiān) 理領域中概念及概念之間的關系,主要包括定義概念、類、類的層次體系、屬性并定義屬性 的值,最后創(chuàng)建實例;選用OffL對建立的領域本體進行編碼、形式化。例如,工程咨詢企業(yè)的知識首先是針對某個項目類型的知識,不同的項目類型,所 用的知識也不同。我們可以構建項目類型類的本體,如圖2所示。對于其中某種項目類型,不同的建筑組成部分,所涉及的知識點也不同,因此根據(jù) 房屋建筑的分部分項劃分,建立的工程項目分部分項本體見圖3 (主要為主體部分)。工程咨詢企業(yè)的知識載體是項目策劃及實施過程中的各類文檔,如項目建議書、 可行性研究報告、設計方案、項目管理規(guī)劃、施工方案、監(jiān)理實施細則、驗收標準,因此我們 可以構建知識文檔類。知識由員工學習、使用、創(chuàng)新、共享,員工的崗位為員工的重要屬性,因此我們可以 構建崗位類。通過研究不同的類之間的聯(lián)系,將構建的類組成一個網(wǎng)狀圖,從而總體形成領域 本體。例如某個分項工程類,其工藝方法存在于施工方案中,控制方法存在于監(jiān)理實施細則 中,驗收方法存在與驗收標準中。某個崗位由要求其具備一定的知識,與知識文檔類相關。第二步知識收集在明確了企業(yè)項目型知識地圖的需求分析基礎之后,主要工作是從不同項目類 型、對應的知識節(jié)點分別收集其知識內容形成企業(yè)的知識庫。針對企業(yè)實際情況,所采取的 知識收集方式為以下兩種方式根據(jù)企業(yè)已有的工程項目文檔資料,對其進行分析,收集檔 案中的知識;隱形知識則主要通過收集專家簡歷及員工崗位信息,形成檔案資料。第三步知識關聯(lián)知識節(jié)點為組織的工作流程中提煉出的知識對象,任何知識地圖都缺少不了 “知 識節(jié)點”和“知識關聯(lián)”這兩個關鍵要素。首先,對各知識節(jié)點進行標記、分類、存儲,再找出 各知識節(jié)點之間的關系。知識關聯(lián)的建立必須在本體的約束下進行,本體中基本的關系有 四種part-0f (部分與整體的關系)、kind-of (繼承關系)、instance-of (實例與類的關系)和attribute-of (屬性與對象的關系),但也并不僅限于上面列出的四種基本關系,可 以根據(jù)企業(yè)的具體情況定義相應的關系,以滿足應用的需要。同時也可以通過對知識節(jié)點 之間的相關性賦予權值,以更好的實現(xiàn)知識檢索。用戶可以通過知識關聯(lián)了解工程咨詢領 域的主要知識構成、工程項目各階段所需的關鍵知識、相關技術領域專家等情況。第四步知識描述與知識鏈接建立知識節(jié)點后,需利用OWL元數(shù)據(jù)對知識庫中的知識對象進行描述,以了解單 個知識節(jié)點的內容、結構、詳細內容等信息,同時在可視化界面和知識描述之間建立鏈接, 通過知識鏈接,可以為用戶提供多種知識地圖的展示形式。第五步知識地圖的生成知識鏈接、知識描述和OWL元數(shù)據(jù)構成了知識地圖的本體層,通過形式化的共享 概念描述,反映了企業(yè)知識庫中的知識結構。在此基礎上利用信息可視化技術和工具,根據(jù) 用戶的需要生成各種視圖,并為用戶提供瀏覽和知識檢索等多種使用途徑。運用本體構建 工具中的可視化插件生成基于本體的知識地圖,基于本體技術的工程咨詢(監(jiān)理) 企業(yè)知識地圖模型如圖4所示。最終構建的知識地圖為四種類型知識地圖的綜合流程型 知識地圖、概念型知識地圖、崗位知識地圖及能力知識地圖。第六步知識地圖的更新與維護知識地圖的構建過程是一個動態(tài)的、不斷用產生的新知識更新知識地圖的循環(huán)過 程。一些知識隨著時間的推移,已經(jīng)不重要或已經(jīng)過時,需要及時刪除;一些原來不重要的 知識逐漸成為核心知識,則需要及時添加;在某一專業(yè)技能方面,發(fā)現(xiàn)更權威的專家,需要 及時添加。知識的維護要能反映知識之間的動態(tài)變化關系,檢查組織中是否存在未發(fā)現(xiàn)、未 確認、未描述的知識;是否建立了正確的鏈接和形成完整的知識網(wǎng)絡;是否保持知識地圖 與知識描述的一致性等。在以上知識地圖基礎上的查詢方法,如圖5所示。一種基于本體的建筑領域知識 查詢方法,包括以下步驟根據(jù)建筑領域內概念結構圖構建本體,包括構建最上層概念;根據(jù)建筑領域內的概念和概念關系圖構建關系;用OntModel來操作本體,從指定的本體文件將本體讀入內存;根據(jù)概念的OntClass,查詢該概念的所有實例的本體名稱;查詢實例和實例相關的關系及關系對應的實例值;查詢概念的父類、子類。具體實現(xiàn)中,可以涉及以下技術。1、Protege 一種可視化的本體構建工具,通過可視化的操作構建OWL語言表述的 本體。(詳見:http://baike. baidu. com/view/3237634. htm,http//protege. Stanford, edu/overview/)2、Jena —種 java API 實現(xiàn)對 OWL本體的操作。(詳見:http://baike. baidu. com/ view/1503128, htm)Jena API :http://open jena. org/ javadoc/index, html3、(WL是W3C開發(fā)的一種網(wǎng)絡本體語言,通過prot6g6構建的本體最終被CWL所表 述,對本體的操作最后是對OWL的操作。(詳見:http://zh. transwiki. orR/cn/owlRuide.
5htm)開發(fā)過程中選用的是OWL/RDF。了解本體中的所有概念及概念之間的關系,創(chuàng)建概念,創(chuàng)建關系,創(chuàng)建實例,用關 系關聯(lián)概念和概念,實例和實例。用到的關系如下ObjectProperty, DatatypeProperty, rdfssubPropertyOf, rdfsdomain, rdfs:range根據(jù)領域內概念結構圖構建本體1、首先構建最上層概念‘項目類型,<owl: Class rdf: ID ="項目類型〃 />‘主體結構,<owl:Class rdf:ID = 〃主體結構〃 />構建項目類型的子類結構如下(用到關系rdfs: subPropertyOf)<owl:Class rdf:about = “ # 房屋建筑〃 ><rdfs:subClass0f rdf !resource = “ # 項目類型"/></owl: Class)<owl:Class rdf:about = “ #構建物"><rdfs:subClass0f rdf:resource =〃 # 項目類型〃 /></owl: Class)<owl: Class rdf: ID = 〃石油化工"><rdfs:subClass0f rdf !resource = " # 項目類型"/></owl: Class)<owl:Class rdf:about = " # 市政公用〃 ><rdfs:subClass0f rdf !resource = " # 項目類型〃 /></owl:Class> 等2、以這些子類一層的概念為基礎構建它們的子類概念以‘房屋建筑’概念為例<owl: Class rdf: ID =“醫(yī)院〃 ><rdfs:subClass0f rdf !resource = “ # 房屋建筑"/></owl: Class)<owl: Class rdf: ID = 〃體育設施〃 ><rdfs:subClass0f rdf !resource = " # 房屋建筑"/></owl: Class)<owl: Class rdf: ID = 〃辦公金融〃 ><rdfs:subClass0f rdf !resource = " # 房屋建筑"/></owl:Class> 等3、根據(jù)提供的建筑知識領域內,概念和概念關系圖構建關系(用到的關系 rdfsdomain, rdfs:range, 0bjectProperty)0例如提供的關系‘主體結構建設’關系它的關聯(lián)概念為‘項目類型’和‘主體結 構’兩個概念,所以該關系的定義如下<owl:0bjectProperty rdf:ID = 〃主體結構建設〃 >
<rdfs: domain rdf: resource = “ # 項目類型"/><rdfs: range rdf !resource = “ # 主體結構〃 /></owlObjectProperty)Objectfroperty關系在概念層次用來關聯(lián)兩個概念,為了在實例層,關聯(lián)兩個概 念的實例。
0087]實現(xiàn)過程是在本體中一個概念的網(wǎng)狀結構包括:概念的實例,關系,子概念和父概念。
0088]取得 OntModel
0089]OntModel是用來操作本體的,從指定的本體文件將本體讀入內存。
0090]private static OntModel protege_model = null ;
0091]public static OntModel initOntModelFactory(){
0092]if (protege_model == null) {
0093]try {
0094]File ontologyFile = new File (" F:/protege-file/ X
0095]程.owl ");
0096]FileInputStream inp = new FiIeInputStream(ontologyFile);
0097]protege_model = ModelFactory. createOntoIogyModel();
0098]protege_model. read(inp, null);
0099]}catch (Exception e){
0100]e. printStackTrace ();
0101]}
0102]return protege_model ;
0103]}else{
0104]return protege_model ;
0105]}
0106]}
0107]基于OntModel實現(xiàn)本體的基本查詢
0108]查詢實例根據(jù)概念的OntClass,查詢該概念的所有實例的本體名稱
IistInstances (true)為取得所有的直接實例,不包括繼承的實例。
0109]public ArrayList<String>inquiry_individual(OntClass centre){
0110]ArrayList<String>protegeIndividual = new ArrayList<String>();
0111]Iterator individualltor = centre. IistInstances(true);
0112]while (individualltor. hasNextO) {
0113]Individual instance = (Individual)individualltor. next ();
0114]String instanceStr = instance. toString();
0115]protegeIndividual, add (instanceStr. substring(instanceStr
0116]. indexOf (" #" )+1));
0117]}
0118]return protegelndividual ;
0119]}
7
查詢關系查詢實例和實例相關的關系及關系對應的實例值。public individuallnfo inquiry_individualInfo(String centre_individual){individuallnfo info = new individuallnfo ();OntModel protege—model = initProtogy. initOntModelFactory();Individual instance = protege—model· getlndividual(getRdfStr()+centre_individual);info. setlndividualName (instance. getLocalName ());OntClass instanceClass = instance. getOntClass ();Iterator individuallt =instanceClass. IistDeclaredProperties ();while (individuallt. hasNext ()) {OntProperty ontPro = (OntProperty) individuallt. next ();RDFNode ontNode = instance. getPropertyValue (ontPro);if (ontNode ! = null) {String ontProValue = ontNode. toStringO ;String ontProStr = ontPro. toStringO ;String ontProName = ontProStr. substring (ontProStr. indexOf (/r)+1);int ontProindex = ontProValue. indexOf (/r #〃);if (ontProindex < 0) {info. getDataPropertylnfo (). put (ontProName,ontProValue);}else{String ontProValueName =ontProValue. substring (ontProindex+1);info. getOb jectPropertylnfo (). put (ontProName,ontProValueName);}}}return info ;}查詢概念的父類,子類listSuperClasses(true)取得概念的直接父類public ArrayList<String>inquiry_supperClass(OntClass centre) {ArrayList<String>ProtegesupperClass = new ArrayList<String> ();Iterator supper = centre.listSuperClasses (true);while (supper. hasNext ()) {0159]
0160] 0161] 0162]
0163]
0164]
0165]
0166]
0167]
0168]
0169]
0170]
0171]
0172]
String suppStr = supper.next (). toString(); String supperStr = clearSupperClass(suppStr) if (supperStr ! = null){
ProtegesupperClass. add(supperStr);
return ProtegesupperClass ;
}
public ArrayList<String>inquiry_protegeSubClass(OntClass centre)
ArrayList<String>ProtegesubClass = new ArrayList<String>(); Iterator sublter = centre. listSubClasses(true); while (sublter. hasNext()){
String subStr = sublter. next (). toString(); ProtegesubClass. add(subStr. substring(subStr. indexOf(" #" ) +
return ProtegesubClass
0173]
0174]1))
0175]
0176]
0177]}
0178]通過以上方法可實現(xiàn)一個概念在本體中的網(wǎng)狀結構查詢。得出這個概念為中心的 知識地圖。以次擴展實現(xiàn)建筑領域知識本體基于關系的系列查詢。本發(fā)明的方法彌補了現(xiàn)有知識顯示、檢索等無序的現(xiàn)狀,提供了一種快速定位和 準確導航知識的工具。知識地圖的最大貢獻在于把知識庫中的資料與知識目錄聯(lián)結起來, 成為一種補充搜索引擎的可選擇的檢索方法,構建知識間的關系,使無序的知識信息以有 序的面貌呈現(xiàn)在用戶面前,提高了知識的利用率。本發(fā)明通過提高知識的定位、利用和創(chuàng)新 能力,增強了現(xiàn)代工程咨詢公司的核心競爭力。本發(fā)明運用本體技術,通過明確、規(guī)范的概念體系和關系網(wǎng)絡為知識地圖的構建 與維護提供堅實基礎,同時保證知識地圖的可用性和時效性,除了提供人工修改維護的途 徑外,能夠實現(xiàn)知識地圖的自學習。本發(fā)明支持知識地圖使用用戶的模糊查詢,能夠將相毗鄰的知識單元聯(lián)系起來并 進行詳細的描述。用戶使用隱喻的方法可以找到他們需要的卻無法詳細描述的知識,提高 了查全率和查準率,使工程咨詢人員更容易地檢索出與他們的利益相關的信息。通過本發(fā)明的方法,能夠為企業(yè)提供一份知識資產清單,作為評估企業(yè)知識現(xiàn)狀、 展示可以利用資源、發(fā)現(xiàn)知識需求并填補空白的工具使用。知識地圖展示了企業(yè)可以利用 的知識資源,完成一個工程項目所需的知識資源及專業(yè)技能等情況,進而評估出對于企業(yè) 什么樣的知識資源使用頻率比較高、什么樣的知識資源對工程項目的開展起著重要作用、 什么樣的知識資源需求較高等,從而確定工程咨詢企業(yè)知識資源的重點,在企業(yè)今后的發(fā) 展中對這些知識資源給予更多關注,使企業(yè)知識資源得到及時準確地維護、更新和修改。本發(fā)明可以清晰地展示實施一個具體項目需要什么樣的技能、各知識之間的關系怎樣以及通過什么過程才能獲得某種技能,是進行以項目為基礎的學習的重要工具。知識 地圖還可以使新進員工了解所在崗位在項目全生命周期內的所處的階段位置,了解工程項 目運作組織過程。員工能夠通過知識地圖能夠明確崗位責任,獲取有用的工作所需的專業(yè) 知識和技能。
權利要求
1. 一種基于本體的建筑領域知識查詢方法,其特征在于,包括以下步驟 根據(jù)建筑領域內概念結構圖構建本體,包括構建最上層概念; 根據(jù)建筑領域內的概念和概念關系圖構建關系; 用OntModel來操作本體,從指定的本體文件將本體讀入內存; 根據(jù)概念的OntClass,查詢該概念的所有實例的本體名稱; 查詢實例和實例相關的關系及關系對應的實例值; 查詢概念的父類、子類。
全文摘要
本發(fā)明涉及一種基于本體的建筑領域知識查詢方法,包括以下步驟根據(jù)建筑領域內概念結構圖構建本體,包括構建最上層概念;根據(jù)建筑領域內的概念和概念關系圖構建關系;用OntModel來操作本體,從指定的本體文件將本體讀入內存;根據(jù)概念的OntClass,查詢該概念的所有實例的本體名稱;查詢實例和實例相關的關系及關系對應的實例值;查詢概念的父類、子類。
文檔編號G06Q10/00GK102096868SQ20111004662
公開日2011年6月15日 申請日期2011年2月25日 優(yōu)先權日2011年2月25日
發(fā)明者朱丹丹, 李少偉, 王彥忠, 瞿斌, 陳曉 申請人:上海建科建設監(jiān)理咨詢有限公司