轉載自http://blog.sina.com.cn/s/blog_3f6815310101rvrk.html
近期學習了一點兒有關本體的東西,當中遇到不少問題因而求助於網絡,卻發現問問題的人多,正確解答的人少,且沒能發現有完整梳理本體學習方法及開發過程的文章,因此對近期我的學習經歷稍作小結,以供本體學習愛好者參考。
(一)本體的概念
本體(Ontology)是近年來計算機界炒得比較火熱的詞之一,它涉及到人工智能、知識工程、語義網、信息建模等諸多領域。它原是哲學中的一個名詞,後被引入計算機領域。關於本體有諸多定義,但用最簡單的說法概括就是它是一些基本概念及這些概念間的關係,更詳細一點兒說,本體是最小化的概念的集合,通過各種對本體的有機組合和推理,可以獲得更多概念,自動學習知識,本體的核心就是人們所共同認可的形式化的明確概念以及概念之間的關係(上面梅紅色字體部分是我自己的概括,官方定義大家還是看百度百科和維基百科吧)。要想具體瞭解本體的定義及它相關的各種概念,可以參見百度百科(http://baike.baidu.com/view/29987.htm)和維基百科(http://zh.wikipedia.org/wiki/本體_(信息科學))。雖然很長,但是強烈建議大家看完,懂得這些概念將是我們今後深入理解本體的基礎。
看完兩個百科,相信你已經對本體有了初步的認識和了解,但只是對這些本體的概念看得眼熟。你很可能像我當時一樣,掉進了本體繁雜概念的漩渦中,還沒有找到正確的方向。那這時候推薦你看一下北京大學計算機系的鄧志鴻等人發表在北京大學學報上的《Ontology研究綜述》,上面對本體的研究及應用有較爲詳盡的描述。
(二)OWL和RDF
本體若想應用,則需要合適的描述語言。本體的描述語言很多,最出名的恐怕要屬W3C推薦的OWL(The Web OntologyLanguage),它建立在RDF(S)基礎上,並對之有語義上的延伸。而RDF,它是Resource DescriptionFramework的縮寫,使用統一資源標識符(URI)。其實無論OWL還是RDF,它們的老祖先都是XML,所以它們的設計思路與XML是一致的,只是在具體領域有自己獨特的表示語法而已。在學習OWL和RDF方面,公認的學習指南是英國曼徹斯特大學的《AnIntroduction to RDF(S) and a Quick Tour ofOWL》,網上的相關介紹幾乎都是翻譯它或者改編它。
(三)本體開發過程
關於本體的開發過程,強烈推薦武漢大學一位學生的CSDN博客“學經世致用之學,練錘鍊仕藝之術”(http://blog.csdn.net/MinistoneNap?viewmode=contents),當中有幾篇非常不錯的博文來介紹本體開發的過程,具體如下:
1. 在博文《Ontology,Taxonomy,Tag,Tag Set,Folksonomy,TagCloud辨析》(http://blog.csdn.net/ministonenap/article/details/1574874)中,作者分析了幾個本體相關的容易混淆的概念。
2. 在博文《本體開發導論》(http://blog.csdn.net/MinistoneNap/article/details/1464343)中,作者介紹了本體的基本概念及並簡要說明了開發方法。
3. 在博文《本體開發的有關問題和命名規範》(http://blog.csdn.net/MinistoneNap/article/details/1464812)中,作者介紹了本體開發的命名規範。其實本體的命名規範並沒有嚴格規定,只要不是軟件中所使用的本體關鍵字即可,不過遵照良好的命名規範尤其是命名一致性原則,對我們的開發還是很有好處的。
4. 在博文《本體開發方法》(http://blog.csdn.net/MinistoneNap/article/details/1467947)中,作者所介紹的其實並不是開發方法或說開發步驟,而是一種設計思路。
而我通過與老師的交流,也總結了一下本體的開發過程,概括如下:
1. 首先,在相關領域專家的幫助下,使用本體開發軟件構建本體庫,如斯坦福大學開發設計的本體編輯器protégé(http://protege.stanford.edu/download/registered.html)。
2. 採用編程的方式自動構建本體庫,這裏常用jena(http://sourceforge.net/projects/jena/files/Jena/Jena-2.6.4/jena-2.6.4.zip/download)等API實現自動構建。
3. 將建立起來的本體存儲到數據庫中,如MySQL(http://dev.mysql.com/downloads/mysql/)。
4.採用sparql語言進行查詢。sparql是語義網的查詢語言,支持OWL,和傳統的SQL有變化,主要是它將RDF的格式融入進去了。sparql還不完善,只能查詢,不能修改。
5.因爲如果用MySQL作爲存儲本體庫的數據庫的話,會面臨很多問題,主要是效率低,數據量大的話會很慢。AlleGroGraph就比較好,支持上億的數據,它本來是雲計算的一個軟件(http://blog.sina.com.cn/s/blog_4afee0940100txwt.html)。
(四)推薦
上面所講就是本體開發的基本過程。下面把我在學習過程中遇到的比較好的博文和資料分享給大家,上面已經提到的就不在此贅述:
1. 中國XML論壇中的本體版塊:http://blogger.org.cn/list.asp?boardid=2
2. protégé學習:
(1)學習protégé 3請參考:http://blogger.org.cn/dispbbs.asp?boardID=2&ID=50311
(2)學習protégé 4請參考:http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/
3. OWL與RDF學習:
(1)OWL Web本體語言指南:http://zh.transwiki.org/cn/owlguide.htm
(2)RDF入門推薦標準:http://zh.transwiki.org/cn/rdfprimer.htm
(3)OWL Web Ontology Language Overview:http://www.w3.org/TR/owl-features/
4. 本體學習:
(1)語義網的本體部分:http://semanticweb.org/wiki/Ontology
(2)一個不錯的本體學習博客——螃哈哈一隻:http://www.crabone.com/index.php/category/語義網基礎
(3)語義學習資料的下載:http://lyle.smu.edu/~coyle/cse7392.semweb/handouts/
(4)語義網相關:http://blog.donews.com/dont/archive/category/uncategorized/page/6
5. Jena學習:
(1)An Introduction to RDF and the Jena RDF API:http://jena.sourceforge.net/tutorial/RDF_API/index.html
(2)Jena – A Semantic Web Framework for Java:http://jena.sourceforge.net/index.html
(3)上面提到的“學經世致用之學,練錘鍊仕藝之術”博客上也有作者關於jena的學習筆記,可惜只寫了很少的部分就沒有再繼續下去了,不過大家仍可以看一下做參考。
6. sparql學習:
(1)SPARQL Query Language for RDF:http://www.w3.org/TR/rdf-sparql-query/
(2)用 SPARQL 搜索 RDF 數據:http://www.ibm.com/developerworks/cn/java/j-sparql/
(3)SPARQLer:http://sparql.org/
路漫漫其修遠兮,吾將上下而求索!與大家共勉!
轉載自:
http://blog.sina.com.cn/s/blog_3f6815310101rvrk.html