以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  中文本体用jena存Mysql数据库,出现?的解决办法!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=37117)


--  作者:horizonman
--  发布时间:8/23/2006 11:27:00 AM

--  中文本体用jena存Mysql数据库,出现?的解决办法!
环境:mysql5.0
jena2.3
第一步:尝试将本体写到数据库中,代码如下
DRIVER_NAME = "...";
DB_URL = "...";
DB_USER = "...";
DB_PASSWD = "...";
DB_TYPE = "...";
MODEL_NAME = "...";
file = "...";

try {
            Class.forName (DRIVER_NAME);        // load driver
            File file = new File("try.owl");
            IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD, DB_TYPE );
            ModelMaker maker = ModelFactory.createModelRDBMaker(conn);
            
            Model m = maker.createModel(MODEL_NAME);
            
            FileInputStream in = new FileInputStream(file);
           
            m.read(in,null);
           
    
        } catch (AlreadyExistsException AEEx){
            System.out.println("The Database already exist");
            AEEx.printStackTrace();
            return false;
        } catch (ClassNotFoundException CNFEx){
            System.out.println("Can not find the class");
            CNFEx.printStackTrace();
            return false;
        } catch (FileNotFoundException FNFEx){
            System.out.println("Can not find the owl file, Please check it!");
            FNFEx.printStackTrace();
            return false;
        } catch(IOException IOEx){
            IOEx.printStackTrace();
            return false;
        }
这时系统会报错,这时程序会报错,说出现异常:
ERROR [main] (RDFDefaultErrorHandler.java:40) - Exception during database access不要怕,我分析其本质是这样的,首先程序接受命令在数据库中建立两张表(每个本体都单独有的两张表),然后再往里面填数据库,但是这时候发现表的characterset(字符集,latin1)和数据的字符集(gb2312,或者其它)不一致,所以报错。

第二步:到数据库界面,发现确实有两张空表(里面几乎没有什么内容):jena_g4t0_reif,jena_g4t1_stmt
将表jena_g4t1_stmt中的字符集改成“utf-8”(包括表和行的字符集都要改)。改完后再执行第一步的程序。就可以了。


如果那位看帖子的同志有更好的办法,请跟帖,大家一起提高嘛,毕竟我的办法有点不可思议。我的QQ:45750008(添加好友请注明:本体)


--  作者:jpz6311whu
--  发布时间:8/23/2006 11:36:00 AM

--  
事实上在安装mysql的时候,如果语言为多语种,最好默认安装成utf-8格式
--  作者:horizonman
--  发布时间:8/23/2006 1:56:00 PM

--  
我的Mysql的默认字符集是utf-8,但是还是有?的问题。后来瞎琢磨才搞出上面提到的方法

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms