新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Semantic Web(语义Web,语义网或语义万维网, Web 3.0)及相关理论,如:Ontology(本体,本体论), OWL(Web Ontology Langauge,Web本体语言), Description Logic(DL, 描述逻辑),RDFa,Ontology Engineering等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区W3CHINA.ORG讨论区 - Web新技术讨论『 Semantic Web(语义Web)/描述逻辑/本体 』 → 利用Jena存储在Oracle的一段程序,高手劳驾看一下。 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5298 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 利用Jena存储在Oracle的一段程序,高手劳驾看一下。 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     zhangyu8301 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:40
      积分:358
      门派:W3CHINA.ORG
      注册:2005/9/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhangyu8301发送一个短消息 把zhangyu8301加入好友 查看zhangyu8301的个人资料 搜索zhangyu8301在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看zhangyu8301的博客楼主
    发贴心情 利用Jena存储在Oracle的一段程序,高手劳驾看一下。

    import java.util.*;

    import com.hp.hpl.jena.db.impl.DriverRDB;
    import com.hp.hpl.jena.db.*;
    import com.hp.hpl.jena.ontology.*;
    import com.hp.hpl.jena.rdf.model.*;
    public class WineOntologyPersistency
    {
     public static final String Wine = "http://wine/";
     public static final String DB_URL = "jdbc:oracle:oci:@";
        public static final String DB_USER = "scott";
        public static final String DB_PASSWD = "tiger";
        public static final String DB = "Oracle";
        public static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
        static ModelMaker maker;
     
     public static void main(String args[])
     {
      OntDocumentManager.getInstance().addAltEntry( Wine, "file:pizza.owl" );

      try
      {
       Class.forName(DB_DRIVER);
      }
      catch(Exception e)
      {
       System.err.println( "Failed to load the driver for the database: " + e.getMessage() );
                System.err.println( "Have you got the CLASSPATH set correctly?" );

      }
      
      try
      {
                
                IDBConnection conn  = new DBConnection( DB_URL, DB_USER, DB_PASSWD,DB );
                
                conn.cleanDB();
                
                maker = ModelFactory.createModelRDBMaker( conn );
            }
            catch (Exception e)
            {
                e.printStackTrace();
                System.exit( 1 );
            }
            
            Model base = maker.createModel(Wine,false);
            
            OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM);
            spec.setImportModelMaker(maker);
            OntModel m = ModelFactory.createOntologyModel(spec,base);
            
            m.read(Wine);
            
            

     }
    }

    编译没有问题,运行时出现:
    com.hp.hpl.jena.db.RDFRDBException: DriverRDB.cleanDB() failed to acquire databa
    se lock:
    (com.hp.hpl.jena.db.RDFRDBException: Failed to lock database after 5 attempts.

    .Try later or else call DriverRDB.unlockDB() after ensuring
    that no other Jena applications are using the database.)
    .Try again or call DriverRDB.unlockDB() if necessary.
            at com.hp.hpl.jena.db.impl.DriverRDB.cleanDB(DriverRDB.java:985)
            at com.hp.hpl.jena.db.DBConnection.cleanDB(DBConnection.java:150)
            at WineOntologyPersistency.main(WineOntologyPersistency.java:37)

    我查了一下Jena 2 – Frequently Asked Questions  其中有一个问答是这样的:
    Q: Why am I getting an exception on failure to lock or unlock the database?
    A: The Jena2 storage subsystem uses a lock internally to implement a critical section for operations that modify the database structure (create/delete tables). The lock is implemented as a database table, i.e., if the table exists in the database, the lock is held. Normally, this lock should be transparent to applications. But if an application has an exception while in a critical section, the database may remain locked for subsequent applications. In this case, a user must manually unlock the database either by calling DriverRDB.unlockDB() or by deleting the table (Jena_Mutex) from the database.

    看上去意思是说解决方法或者是调用 DriverRDB.unlockDB() 或者是删了Jena_Mutex这个表,问题是DriverRDB.unlockDB() 应该什么时候调用?写在什么地方?unlockDB()是静态方法吗,可以直接写成DriverRDB.unlockDB() 吗?Jena2.3自带的JavaDoc也没有DriverRDB这个类的说明!
    如果采用第二种方法,去删除那个Jena_Mutex这个表,我找了一下数据库里没有这个表啊?这个表存在Oracle数据库里什么地方啊?
    唉,一堆问题,望高手看一下问题何在!万分感谢!


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/7 22:10:00
     
     wolf_xjf 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:260
      门派:XML.ORG.CN
      注册:2006/3/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wolf_xjf发送一个短消息 把wolf_xjf加入好友 查看wolf_xjf的个人资料 搜索wolf_xjf在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wolf_xjf的博客2
    发贴心情 
    这位老大,小弟不能帮忙,到想麻烦你一下,你能告诉我如何,给jena 配置运行环境,参数怎么设啊!我用的是jena2.3,小弟找不到指导文章啊!帮忙指点一二吧!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/8 15:28:00
     
     zhangyu8301 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:40
      积分:358
      门派:W3CHINA.ORG
      注册:2005/9/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhangyu8301发送一个短消息 把zhangyu8301加入好友 查看zhangyu8301的个人资料 搜索zhangyu8301在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看zhangyu8301的博客3
    发贴心情 
    把jena下lib文件夹下的所有.jar文件,加入到classpath中。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/8 15:34:00
     
     dylloveyou 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:25
      积分:147
      门派:XML.ORG.CN
      注册:2005/3/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dylloveyou发送一个短消息 把dylloveyou加入好友 查看dylloveyou的个人资料 搜索dylloveyou在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看dylloveyou的博客4
    发贴心情 
    jena是什么啊,干什么用啊,能否介绍一下。谢谢!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/12 22:27:00
     
     bandaotiehe 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:139
      门派:XML.ORG.CN
      注册:2008/8/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bandaotiehe发送一个短消息 把bandaotiehe加入好友 查看bandaotiehe的个人资料 搜索bandaotiehe在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bandaotiehe的博客5
    发贴心情 

    请问楼主,我自己写的一个链接oracle数据库的程序运行的时候老师说,错误代码如下:DBerrorjava.sql.SQLException: Io 异常: SO Exception was generated
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
    at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
    at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
    at com.hp.hpl.jena.db.DBConnection.containsDefaultModel(DBConnection.java:239)
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:66)
    at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:59)
    at com.dareway.cn.TestOracle.main(TestOracle.java:41)
    com.hp.hpl.jena.db.RDFRDBException: Failure to instantiate DB Driver:oracle java.sql.SQLException: Io 异常: SO Exception was generated
    at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:296)
    at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
    at com.hp.hpl.jena.db.DBConnection.containsDefaultModel(DBConnection.java:239)
    at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:66)
    at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:59)
    at com.dareway.cn.TestOracle.main(TestOracle.java:41)
    Caused by: java.sql.SQLException: Io 异常: SO Exception was generated
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
    at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
    ... 5 more
    Exception in thread "main"
    您知道这个是什么原因吗?
    我的程序是;
    import com.hp.hpl.jena.rdf.model.Model;
    import com.hp.hpl.jena.rdf.model.ModelFactory;
    import com.hp.hpl.jena.rdf.model.ModelMaker;

    public class TestOracle {

    /**
      * @param args
      * @throws ClassNotFoundException
      */
    public static void main(String[] args)  {
      // TODO Auto-generated method stub
      try {
      String className = "oracle.jdbc.driver.OracleDriver";   // path of driver class
      
      
      try {
       Class.forName (className);
      } catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }  
      
      // Load the Driver
      String DB_URL="jdbc:oracle:thin:@10.2.0.70";                // URL of database
      String DB_USER="hrserve";                              // database user id
      String DB_PASSWD="hrserve";                              // database password
      String DB="oracle";                            // database type

    //   Create database connection
      IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD, DB );
      ModelMaker maker = ModelFactory.createModelRDBMaker(conn) ;
             
    //   create or open the default model
      Model model = maker.createDefaultModel();
    //System.out.print("成功了啊 ,呵呵"+model.isEmpty());
    //   Close the database connection
      
       conn.close();
      } catch (SQLException e) {
       System.out.print("错误结果是"+e.toString());
       // TODO Auto-generated catch block
       e.printStackTrace();
       
      }

      
      
    }

    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/11/14 18:53:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/3/11 6:24:18

    本主题贴数5,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    80.078ms