以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  [求助]用Progete owl API 从数据中读取本体时,getOWLNamedClass不能搜索中文  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=88864)


--  作者:thomas_310
--  发布时间:12/23/2010 1:10:00 PM

--  [求助]用Progete owl API 从数据中读取本体时,getOWLNamedClass不能搜索中文
各位大虾~不知道你们有没遇到这样一个问题。诚心求助。

   首先说一下我现在的情况。我用Protege创建了一个中文本体,导出成owl文件。

Protege owl api 有两种方式读取。
第一种,是通过调用方法ProtegeOWL.createJenaOWLModelFromURI(fileurl) 直接读取owl文件成OWLModel (JenaOWLModel) , 这样,我用OWLModel .getOWLNamedClass("领域本体") 方法 (假设我本体中有一个叫“领域本体”的类),是可以搜索得到这个 领域本体的类(OWLNamedClass)出来,然后用panel显示树状结构。
代码
  OWLNamedClass owlLogisticsThingClass = owlModel.getOWLNamedClass("领域本体");
   SelectOWLClsesPanel panel = new SelectOWLClsesPanel(owlModel, Collections.singleton(owlLogisticsThingClass));
     
     JFrame f = new JFrame();
     f.setSize(300, 700);
     f.setContentPane(panel);
     f.setVisible(true);
这个可以正常显示。

  第二种方法是,我按照 http://protegewiki.stanford.edu/wiki/ConvertingToDatabaseProject 的方法把owl存入到mysql中。
  然后用 http://protegewiki.stanford.edu/wiki/LoadOWLOntologyFromDB 中的方法2 从数据库中读取本体出来,成OWLModel 。
  现在的奇怪现象是,我可以用
  Collection classes = owlModel.getUserDefinedOWLNamedClasses();  获取到没有乱码的类名。
  但是调用
OWLNamedClass owlLogisticsThingClass = owlModel.getOWLNamedClass("领域本体");  就搜到到乱码的class了。
   
   后来经过对比,发现第一种方法 的owlmode是JenaOWLModel ,而第二种从数据库中读取的owlmodel是 OWLDatabaseModel ,两个都是OWLModel 接口的实现,但是不知道为啥 OWLDatabaseModel .getOWLNamedClass 就不支持中文。
   
   我想做的是本体编辑工具,是想针对大本体来做,所有只能选择存到数据库中。

   另外,我已经对Eclipse的编码,owl文件,Mysql 的encoding都变成UTF8的了。
   
   哎~请问高手没有没有遇到过这个问题~?现在都不知道如何解决好了。


--  作者:thomas_310
--  发布时间:12/23/2010 3:17:00 PM

--  
有高手遇到过我的问题吗?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,109.375ms