近期学习了一点儿有关本体的东西,当中遇到不少问题因而求助于网络,却发现问问题的人多,正确解答的人少,且没能发现有完整梳理本体学习方法及开发过程的文章,因此对近期我的学习经历稍作小结,以供本体学习爱好者参考。
(一)本体的概念
本体(Ontology)是近年来计算机界炒得比较火热的词之一,它涉及到人工智能、知识工程、语义网、信息建模等诸多领域。它原是哲学中的一个名词,后被引入计算机领域。关于本体有诸多定义,但用最简单的说法概括就是它是一些基本概念及这些概念间的关系,更详细一点儿说,本体是最小化的概念的集合,通过各种对本体的有机组合和推理,可以获得更多概念,自动学习知识,本体的核心就是人们所共同认可的形式化的明确概念以及概念之间的关系(上面梅红色字体部分是我自己的概括,官方定义大家还是看百度百科和维基百科吧)。要想具体了解本体的定义及它相关的各种概念,可以参见百度百科(http://baike.baidu.com/view/29987.htm)和维基百科(http://zh.wikipedia.org/wiki/本体_(信息科学))。虽然很长,但是强烈建议大家看完,懂得这些概念将是我们今后深入理解本体的基础。
看完两个百科,相信你已经对本体有了初步的认识和了解,但只是对这些本体的概念看得眼熟。你很可能像我当时一样,掉进了本体繁杂概念的漩涡中,还没有找到正确的方向。那这时候推荐你看一下北京大学计算机系的邓志鸿等人发表在北京大学学报上的《Ontology 研究综述》,上面对本体的研究及应用有较为详尽的描述。
(二)OWL和RDF
本体若想应用,则需要合适的描述语言。本体的描述语言很多,最出名的恐怕要属W3C推荐的OWL(The Web Ontology Language),它建立在RDF(S)基础上,并对之有语义上的延伸。而RDF,它是Resource Description Framework的缩写,使用统一资源标识符(URI)。其实无论OWL还是RDF,它们的老祖先都是XML,所以它们的设计思路与XML是一致的,只是在具体领域有自己独特的表示语法而已。在学习OWL和RDF方面,公认的学习指南是英国曼彻斯特大学的《An Introduction to RDF(S) and a Quick Tour of OWL》,网上的相关介绍几乎都是翻译它或者改编它。
(三)本体开发过程
关于本体的开发过程,强烈推荐武汉大学一位学生的CSDN博客“学经世致用之学,练锤炼仕艺之术”(http://blog.csdn.net/MinistoneNap?viewmode=contents),当中有几篇非常不错的博文来介绍本体开发的过程,具体如下:
1. 在博文《Ontology,Taxonomy,Tag,Tag Set,Folksonomy,Tag Cloud辨析》(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/%E8%AF%AD%E4%B9%89%E7%BD%91%E5%9F%BA%E7%A1%80
(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://warmcafe.info