新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国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 Ontology API学习帖,问题帖[讨论] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4642 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Jena Ontology API学习帖,问题帖[讨论] 举报  打印  推荐  IE收藏夹 
       本主题类别: Ontology Language    
     csjcg2 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:91
      门派:XML.ORG.CN
      注册:2009/2/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给csjcg2发送一个短消息 把csjcg2加入好友 查看csjcg2的个人资料 搜索csjcg2在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看csjcg2的博客楼主
    发贴心情 Jena Ontology API学习帖,问题帖[讨论]

    最近在学习Jena Ontology API,由于参考资料不多,所以经常遇到问题无法解决。发这条贴子,跟大家讨论一下,希望高手能指点一二。

    问题: 用protege建模,生成了一个owl Project(包含project文件和owl文件等),然后用Jena API来读取owl文件,并存入数据库。最后用Jena API的OntModel.listClasses把数据库里面的类读出来,不知道是不是因为本体库太大(有600多个concept),每次用Testcase测试的时候,都会报错:
    java.lang.OutOfMemoryError: Java heap space
     at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:406)
     at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2186)
     at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4766)
     at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4671)
     at com.hp.hpl.jena.db.impl.SQLCache.doPrepareSQLStatement(SQLCache.java:289)
     at com.hp.hpl.jena.db.impl.SQLCache.getPreparedSQLStatement(SQLCache.java:271)
     at com.hp.hpl.jena.db.impl.SQLCache.getPreparedSQLStatement(SQLCache.java:318)
     at com.hp.hpl.jena.db.impl.PSet_TripleStore_RDB.find(PSet_TripleStore_RDB.java:843)
     at com.hp.hpl.jena.db.impl.SpecializedGraph_TripleStore.find(SpecializedGraph_TripleStore.java:141)
     at com.hp.hpl.jena.db.GraphRDB.graphBaseFind(GraphRDB.java:431)
     at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:224)
     at com.hp.hpl.jena.graph.compose.MultiUnion.graphBaseFind(MultiUnion.java:171)
     at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:224)
     at com.hp.hpl.jena.reasoner.FGraph.find(FGraph.java:42)
     at com.hp.hpl.jena.reasoner.FGraph.findWithContinuation(FGraph.java:61)
     at com.hp.hpl.jena.reasoner.FinderUtil$Cascade.find(FinderUtil.java:89)
     at com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph.findDataMatches(FBRuleInfGraph.java:209)
     at com.hp.hpl.jena.reasoner.rulesys.impl.TopLevelTripleMatchFrame.<init>(TopLevelTripleMatchFrame.java:40)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPInterpreter.<init>(LPInterpreter.java:133)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPInterpreter.<init>(LPInterpreter.java:93)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPBRuleEngine.generatorFor(LPBRuleEngine.java:266)
     at com.hp.hpl.jena.reasoner.rulesys.impl.ConsumerChoicePointFrame.init(ConsumerChoicePointFrame.java:71)
     at com.hp.hpl.jena.reasoner.rulesys.impl.ConsumerChoicePointFrame.<init>(ConsumerChoicePointFrame.java:60)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPInterpreter.setupTabledCall(LPInterpreter.java:671)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPInterpreter.run(LPInterpreter.java:565)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPInterpreter.next(LPInterpreter.java:187)
     at com.hp.hpl.jena.reasoner.rulesys.impl.Generator.pump(Generator.java:239)
     at com.hp.hpl.jena.reasoner.rulesys.impl.Generator.pump(Generator.java:226)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPBRuleEngine.pump(LPBRuleEngine.java:305)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPTopGoalIterator.moveForward(LPTopGoalIterator.java:79)
     at com.hp.hpl.jena.reasoner.rulesys.impl.LPTopGoalIterator.next(LPTopGoalIterator.java:186)
     at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:68)

    如果我不是读取用protege建立的owl文件,而是用Jena example里面的test1.owl,就没有问题。不知道有没有人遇到过类似的问题,如果有,请指教一下。谢谢。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/23 17:58:00
     
     jpz6311whu 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      等级:研三(收到微软亚洲研究院的Offer了)(版主)
      文章:1718
      积分:10610
      门派:W3CHINA.ORG
      注册:2005/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jpz6311whu发送一个短消息 把jpz6311whu加入好友 查看jpz6311whu的个人资料 搜索jpz6311whu在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jpz6311whu的博客2
    发贴心情 
    推理的OntModel不适合存储在数据库中,我曾经也遇到这种情况,要么把本体库改成不推理模式,要么不存储到数据库中。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/23 19:11:00
     
     csjcg2 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:91
      门派:XML.ORG.CN
      注册:2009/2/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给csjcg2发送一个短消息 把csjcg2加入好友 查看csjcg2的个人资料 搜索csjcg2在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看csjcg2的博客3
    发贴心情 
    你的意思是如果需要推理的话,就不要用数据库存储本体?

    难道直接从owl文件读取的OntModel处理推理速度会更快?

    ---------------------------------------------------------------------------

    刚刚我提的错误已经解决,原因估计是频繁操作数据库导致内存中有大量的废弃对象,垃圾回收大量占用系统CPU。(好像是这样,超过98%就会报错,具体可以去查查有关垃圾收集机制)解决方法是:将jvm的参数修改一下 -xmx512m。但是虽然最终还是可以绿色通过,但是总耗时5分钟左右。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/23 21:05:00
     
     jpz6311whu 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      等级:研三(收到微软亚洲研究院的Offer了)(版主)
      文章:1718
      积分:10610
      门派:W3CHINA.ORG
      注册:2005/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jpz6311whu发送一个短消息 把jpz6311whu加入好友 查看jpz6311whu的个人资料 搜索jpz6311whu在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jpz6311whu的博客4
    发贴心情 
    以下是引用csjcg2在2009-3-23 21:05:00的发言:
    你的意思是如果需要推理的话,就不要用数据库存储本体?

    难道直接从owl文件读取的OntModel处理推理速度会更快?

    ---------------------------------------------------------------------------

    刚刚我提的错误已经解决,原因估计是频繁操作数据库导致内存中有大量的废弃对象,垃圾回收大量占用系统CPU。(好像是这样,超过98%就会报错,具体可以去查查有关垃圾收集机制)解决方法是:将jvm的参数修改一下 -xmx512m。但是虽然最终还是可以绿色通过,但是总耗时5分钟左右。


    是的,我以前也是遇到同样的情况,CPU满负荷运行过30分钟还没有完成,实在不得不放弃,处理的OWL大概几万triple的样子

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/23 21:42:00
     
     csjcg2 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:91
      门派:XML.ORG.CN
      注册:2009/2/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给csjcg2发送一个短消息 把csjcg2加入好友 查看csjcg2的个人资料 搜索csjcg2在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看csjcg2的博客5
    发贴心情 
    兄弟,你是对的。用数据库存储果然是比文件存储慢(在使用推理的情况下)

    我使用的都是Jena提供的推理器。

    推理器有三种 RDFS_INF  TRANS_INF  RULE_INF (当然还有一种就是没有推理器啦)

    实验结果是用TRANS_INF的速度是最快的。

    对OntModel的listSubClasses()这个方法而言的。

    在文件读取OWL数据,TRANS_INF的推理器的设置下OntModel m = ModelFacotry.createOntModel(OntModelSpec.OWL_DL_MEM_TRANS_INF)
    时间是1106ms。

    文件里大约有600多个概念。还有100左右的子类声明。

    有人用过Racer的推理机吗?如果用Racer,会不会比Jena自带的rule推理机还慢啊。。。

    最后唉叹一下,这语义网搜索的速度也太慢了吧。。。。。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/23 22:08: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 5:47:50

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

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