假设要做的是选课pȝQ很Ҏ看出pȝ里应该有q些对象Q课E、学生、教师,它们之间互有联系。现在的问题是,本体、Javacd数据库各扮演怎样的角Ԍ我目前想到的Ҏ有以下几个:
- 在本体(owlQ里建立q些cd关系Q在Java里徏立同LBeanc,q行时系l把本体里的individuals转换为Javacȝ实例Q也是在内存里得到一个Java实例的集合,选课的各U操作就是对q个集合的修改,退出系l时再进行反向{换,把修改反映到本体里。在q样的实现方法中Q本体实际上扮演了数据库的角Ԍ所以当数据QindividualsQ很多的时候,效率会很成问题。(Protege的owl~辑工具提供了从本体生成EMF模型代码的功能,虽然目前q是alpha版,q也许将成ؓ同步两种模型的不错选择。)
- 对上面的Ҏq行修改Q让本体不保存individualsQ对Java实例集合的修Ҏl反映到关系数据库里Q利用hibernate不会很困难)Q运行时pȝ直接从数据库里取得数据{换ؓJava实例。这L实现可以解决效率问题Q但和传l应用区别不大,本体的作用几乎ؓ零?
- 另一U比较极端的做法是只用本体维护类和individualsQJava斚w没有M与应用有关的模型Q系l一开始把本体d内存以rdf囄方式存在Q选课操作转换为对此图的修改(利用Jena{APIQ。这个方法存在两个问题,一是效率,二是Java代码的可L下降,q就相当于直接用JDBC而不是hibernateҎ据库操作的区别?/LI>
在solo目里我使用的是W一U方式,各方面效果还可以接受Q但本体的作用发挥得很不够。这是很重要的方面,因ؓ如果和传l项目没有区别,辛辛苦苦引入本体又是Z什么,特别是对本体推理的功能,我想最关键的问题还是要扑և最适合应用的本体,定义本体的确是一门学问?/P>
UpdateQIBM Alphaworks也提供了一l?A >本体工具Q包括Orient、EODM和RStarQ,对EMF的支持应该不错。今天初步试了一下OrientQ它只支持RDF(S)Q而不支持OWLQ所以无法满E项目的要求QOrient的目前版本还有一些小bugQ除已知的那些以外,我把.ontology文g输出为ecore模型L不成功,而输Zؓrdf是可以的?/P>
UpdateQ推荐一个关于本体和模型驱动?A >qȝ?/A>Q主要内Ҏ介绍应该如何利用UML的可视化~辑功能和元模型的扩展功能来构造本体,q里面介l了相当多的相关概念Q其中很多我甚至没听说过Q,以及它们出现的原因,比较有利于我们理清思\?/P>