以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (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=71029)


--  作者:javacaihai
--  发布时间:12/30/2008 5:14:00 PM

--  请高手解答:使用Jena将本体存入MySQL
本人使用的是 Jena-2.5.7  MySQL 5.0   mysql-connector-java-3.1.10   jdk1.6.0_07
源代码:
import java.io.*;
import java.sql.SQLException;
import com.hp.hpl.jena.db.*;
import com.hp.hpl.jena.rdf.model.*;
public class MysqlTest{
     
     public static final String strDriver = "com.mysql.jdbc.Driver"; // path of driver class
     public static final String strURL = "jdbc:mysql://localhost/ontodb"; // URL of database
     public static final String strUser = "root"; // database user id
     public static final String strPassWord = "4408"; // database password
     public static final String strDB =  "MySQL"; // database type
     public static void main(String[] args){
      try{
            // 创建一个数据库连接
              IDBConnection conn = new DBConnection ( strURL, strUser, strPassWord, strDB );
            
              // 加载数据库驱动类,需要处理异常
              try
              {
                   Class.forName(strDriver);
              }catch(ClassNotFoundException e){
                   System.out.println("ClassNotFoundException, Driver is not available...");
              }
              
            // 使用数据库连接参数创建一个模型制造器
              ModelMaker maker = ModelFactory.createModelRDBMaker(conn);
              
              // 创建一个默认模型,命名为 MyOntology
              Model defModel = maker.createDefaultModel();
              // 准备需要存入数据库的本体文件,建立输入文件流
              FileInputStream inputSreamfile = null;
              try
              {
                   File file = new File("D:/Person.owl");
                   inputSreamfile = new FileInputStream(file);
              } catch (FileNotFoundException e) {
                   e.printStackTrace();
                   System.out.println("Ontology File is not available...");
              }
              
              InputStreamReader in = null;
              try
              {
                   in = new InputStreamReader(inputSreamfile, "UTF-8");
              } catch (UnsupportedEncodingException e) {
               System.out.println("Exceptions occur33...");
                   e.printStackTrace();
              }
              
            // 读取文件
              defModel.read(in,null);
            
            // 关闭输入流读取器
              try
              {
                   in.close();
              } catch (IOException e) {
               System.out.println("Exceptions occurclose1...");
                   e.printStackTrace();
              }
            
              // 执行数据转换,将本体数据存入数据库
            defModel.commit();
              
            // 关闭数据库连接
              try
              {
                   conn.close();
              } catch (SQLException e) {
               System.out.println("Exceptions occur22...");
                   e.printStackTrace();
              }
        }catch(RDFRDBException e){
                  System.out.println("Exceptions occur...");
             }

         
             
         }
     }
输出结果
Tue Dec 30 17:07:06 CST 2008 TRACE:
Tue Dec 30 17:07:06 CST 2008 TRACE:

.....
Tue Dec 30 17:07:06 CST 2008 TRACE:
Tue Dec 30 17:07:06 CST 2008 TRACE:

Exceptions occur...

请高手解答一下
不知道哪里出现问题了 。。。谢谢


--  作者:zhenzixiong
--  发布时间:1/5/2009 9:27:00 AM

--  
你好,我测试过你的程序,没有什么问题。可以将本体存入mysql。我用的是jena2.5.2,mysql用的驱动是mysql-connector-java-3.1.13-bin。我觉得你从这几个方面看看:
1、你的owl文件是否是格式良好的?我用自己的owl文件测试的,你可以用protege自带的owl文件试试。
2、jena的包导入是否全面?我没有仔细考虑,将jena2.5.2中lib下面的所以jar都导入了。
3、mysql驱动是否匹配?
--  作者:javacaihai
--  发布时间:1/5/2009 8:59:00 PM

--  
知道错哪了 我的MySQL端口号 是 3309 不是 3306 哎。。
郁闷了好久  搞忘记了。。
--  作者:Humphrey
--  发布时间:3/11/2009 2:11:00 PM

--  
很多时候如果可以还是使用默认配置,这样就不容易出现上面的错误了。
二位对本体持久化的讨论很有意义,是一个有价值的参考。
同时我觉得,如果把更改的端口号在程序中指明也可以吧?


--  作者:lipeiqiang1997
--  发布时间:4/13/2009 10:54:00 AM

--  
你好,我用你编写的程序在运行时总报Exceptions occur这个错误,我的MYSQL是4.1,端口也配置正确,zhenzixiong朋友说的几项要注意的也都注意了, 请问还有别的问题吗?谢谢
--  作者:lipeiqiang1997
--  发布时间:4/13/2009 10:55:00 AM

--  
你好,我用你编写的程序在运行时总报Exceptions occur这个错误,我的MYSQL是4.1,端口也配置正确,你说的几项要注意的也都注意了, 请问还有别的问题吗?谢谢
--  作者:Humphrey
--  发布时间:4/13/2009 2:13:00 PM

--  
Jena和MySQL的版本要匹配才不容易出错,请参考Jena官方站点的说明。
--  作者:lipeiqiang1997
--  发布时间:4/14/2009 10:13:00 PM

--  
我的JENA的版本号和驱动都对应,但是在运行这个程序时在这一步Model defModel = maker.createDefaultModel();出现错误,我想问已经弄通这个程序的朋友,你们在运行时就没有出现问题吗?并且我还看到有的版本是Model defModel = maker.createDefaultModel(Ontology);他们说他们的程序也可以用,这我就不明白了,并且有点程序是createModel说也能通过运行,我都按照他们的程序走了一遍,结果总出现异常Exceptions occur.,哪位朋友知道请告诉我一声,谢谢。


--  作者:jpz6311whu
--  发布时间:4/16/2009 8:28:00 PM

--  
抛异常的时候,把stacktrace打印出来看看
--  作者:lipeiqiang1997
--  发布时间:4/17/2009 4:19:00 PM

--  
非常感谢各位朋友的帮助,谢谢了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms