关于本体编程的实现

简介: 临近期末,我有一门课程的期末项目是做一个教育领域的本体应用系统,所以最近经常思考本体在这样一个系统中所起的作用,以及该如何实现。(本体是否只能在web环境下发挥作用,使用本体描述一个独立系统的模型是否值得?) 假设要做的是选课系统,很容易看出系统里应该有这些对象:课程、学生、教师,它们之间互有联系。

临近期末,我有一门课程的期末项目是做一个教育领域的本体应用系统,所以最近经常思考本体在这样一个系统中所起的作用,以及该如何实现。(本体是否只能在web环境下发挥作用,使用本体描述一个独立系统的模型是否值得?)

假设要做的是选课系统,很容易看出系统里应该有这些对象:课程、学生、教师,它们之间互有联系。现在的问题是,本体、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的可视化编辑功能和元模型的扩展功能来构造本体,这里面介绍了相当多的相关概念(其中很多我甚至没听说过),以及它们出现的原因,比较有利于我们理清思路。

本文转自博客园八进制的博客,原文链接:关于本体编程的实现,如需转载请自行联系原博主。

相关文章
|
编译器
知识单元三 面向对象-3(二)
知识单元三 面向对象-3(二)
249 0
|
Java 编译器 应用服务中间件
知识单元三 面向对象-2
知识单元三 面向对象-2
190 0
|
Java iOS开发
知识单元三 类与对象-1(一)
知识单元三 类与对象-1
117 0
|
3月前
|
算法 搜索推荐
从代码到哲学:探索编程的深层意义
【9月更文挑战第22天】在这篇文章中,我们将深入探讨编程不仅仅是一门技术,更是一种思考方式。通过分析编程的基本原则和实践过程,我们可以发现编程与生活、哲学乃至宇宙规律之间存在着惊人的相似性。文章将带你从代码的字面意义出发,逐步展开到对生活的反思,最终触及到宇宙的本质,揭示出编程活动背后更深层次的意义。
38 5
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型是如何理解人类语言的?
大模型是如何理解人类语言的?
80 0
|
Java 编译器
知识单元三 面向对象-3(一)
知识单元三 面向对象-3
189 0
|
7月前
|
前端开发 Go Android开发
人机对话:程序设计,学哪种语言好?
人机对话:程序设计,学哪种语言好?
103 1
|
存储 大数据 OLTP
抽象真实世界的利器
抽象真实世界的利器
|
定位技术
定义系统、模型、结构等概念|认知建模笔记翻译(4)
定义系统、模型、结构等概念|认知建模笔记翻译(4)
136 0
|
Java
知识单元三 类与对象-1(二)
知识单元三 类与对象-1(二)
213 0