蘋果的成長日記

          我還是個青蘋果呀!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            57 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
                   原文鏈接 

                   臨近期末,我有一門課程的期末項目是做一個教育領域的本體應用系統,所以最近經常思考本體在這樣一個系統中所起的作用,以及該如何實現。(本體是否只能在web環境下發揮作用,使用本體描述一個獨立系統的模型是否值得?)

          假設要做的是選課系統,很容易看出系統里應該有這些對象:課程、學生、教師,它們之間互有聯系?,F在的問題是,本體、Java類和數據庫各扮演怎樣的角色?我目前想到的方法有以下幾個:

          1. 在本體(owl)里建立這些類和關系,在Java里建立同樣的Bean類,運行時系統把本體里的individuals轉換為Java類的實例,也就是在內存里得到一個Java實例的集合,選課的各種操作就是對這個集合的修改,退出系統時再進行反向轉換,把修改反映到本體里。在這樣的實現方法中,本體實際上扮演了數據庫的角色,所以當數據(individuals)很多的時候,效率會很成問題。(Protege的owl編輯工具提供了從本體生成EMF模型代碼的功能,雖然目前還是alpha版,這也許將成為同步兩種模型的不錯選擇。)

          2. 對上面的方法進行修改,讓本體不保存individuals,對Java實例集合的修改最終反映到關系數據庫里(利用hibernate不會很困難),運行時系統直接從數據庫里取得數據轉換為Java實例。這樣的實現可以解決效率問題,但和傳統應用區別不大,本體的作用幾乎為零。

          3. 另一種比較極端的做法是只用本體維護類和individuals,Java方面沒有任何與應用有關的模型,系統一開始把本體讀入內存以rdf圖的方式存在,選課操作轉換為對此圖的修改(利用Jena等API)。這個方法存在兩個問題,一是效率,二是Java代碼的可讀性下降,這就相當于直接使用JDBC而不是hibernate對數據庫操作的區別。

          在solo項目里我使用的是第一種方式,各方面效果還可以接受,但本體的作用發揮得很不夠。這是很重要的方面,因為如果和傳統項目沒有區別,辛辛苦苦引入本體又是為了什么,特別是對本體推理的功能,我想最關鍵的問題還是要找出最適合應用的本體,定義本體的確是一門學問。

          Update:IBM Alphaworks也提供了一組本體工具(包括Orient、EODM和RStar),對EMF的支持應該不錯。今天初步試了一下Orient,它只支持RDF(S),而不支持OWL,所以無法滿足課程項目的要求,Orient的目前版本還有一些小bug,除已知的那些以外,我把.ontology文件輸出為ecore模型總是不成功,而輸出為rdf是可以的。

          Update:推薦一個關于本體和模型驅動的幻燈片,主要內容是介紹應該如何利用UML的可視化編輯功能和元模型的擴展功能來構造本體,這里面介紹了相當多的相關概念(其中很多我甚至沒聽說過),以及它們出現的原因,比較有利于我們理清思路。

          posted on 2005-06-14 09:54 蘋果 閱讀(1038) 評論(0)  編輯  收藏 所屬分類: Jena/RDF/OWL/語義網
          主站蜘蛛池模板: 灌阳县| 靖远县| 深泽县| 威信县| 巴林左旗| 平乐县| 通河县| 洪雅县| 诏安县| 万州区| 乌兰浩特市| 神木县| 邢台市| 长乐市| 盖州市| 聊城市| 西昌市| 湖北省| 永城市| 翁源县| 珲春市| 库伦旗| 深州市| 会宁县| 延安市| 洪江市| 杭锦旗| 汝南县| 交城县| 西平县| 大宁县| 长顺县| 扎鲁特旗| 新化县| 右玉县| 古蔺县| 白沙| 五原县| 普兰店市| 壤塘县| 西充县|