以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Semantic Web(语义Web)/描述逻辑/本体 』 (http://bbs.xml.org.cn/list.asp?boardid=2) ---- 使用Jena修改的OWL文件无法读取? (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=54819) |
-- 作者:topyn -- 发布时间:11/3/2007 1:19:00 AM -- 使用Jena修改的OWL文件无法读取? 用Proteg写了个本体,存为OWL格式,程序中用Jena查询都是对的,修改后就不对了。 读取代码: Model=model = ModelFactory.createDefaultModel(); FileInputStream file = new FileInputStream(filePath); n = new InputStreamReader(file,"UTF-8"); model.read(in, null); in.close(); 插入实例代码: Resource rs=model.createResource("http://055.owl#小王"); Property prop=model.createProperty("http://22-rdf-syntax-ns#type"); RDFNode node=model.getRDFNode(Node.create("http://055.owl#学生")); Statement stat=model.createStatement(rs, prop, node); model.add(stat); FileOutputStream file = new FileOutputStream(filePath); out = new OutputStreamWriter(file,"UTF-8"); model.write(out,null,"http://055.owl"); out.flush(); out.close(); 执行之后写入成功,新的实例也写进去了。但是再次运行程序查询的时候什么都查不到。 对比了一下文件开头少了<?xml version="1.0"?>。用程序把这句加上,还是什么都查不到。我认为是编码的问题,但不知怎么解决,请大家帮忙。谢谢。 |
-- 作者:jpz6311whu -- 发布时间:11/3/2007 11:29:00 AM -- 请楼主把运行前和运行后的owl传上来看看 |
-- 作者:topyn -- 发布时间:11/3/2007 3:49:00 PM -- [此贴子已经被作者于2007-11-3 22:39:31编辑过]
|
-- 作者:jpz6311whu -- 发布时间:11/3/2007 9:07:00 PM -- j p z 6 3 1 1 w h u @ t o m . c o m |
-- 作者:topyn -- 发布时间:11/3/2007 10:16:00 PM -- 问题已解决,确实是编码的问题。看了com.hp.hpl.jena.rdf.model.Model接口,其中有一句话:It is often better to use an OutputStream rather than a Writer, since this will avoid character encoding errors. 就是说OutputStream比Writer好用,因为能够避免编码错误问题。所以我取消了源码中out = new OutputStreamWriter(file,"UTF-8"),直接使用FileOutputStream写。 代码如下: FileOutputStream file = new FileOutputStream(filepath); model.write(file, "RDF/XML-ABBREV"); file.close(); 希望给其他朋友提个醒,这个问题折腾了我好几天,呵呵。 |
-- 作者:topyn -- 发布时间:11/3/2007 10:37:00 PM -- protege owl api也可实现Owl文件的读写,代码如下: 读取: FileInputStream file= new FileInputStream(filePath); Reader in = new InputStreamReader(file,"UTF-8"); OWLModel owlModel=ProtegeOWL.createJenaOWLModelFromReader(in); model=owlModel.getJenaModel(); in.close(); 写入: FileOutputStream outFile= new FileOutputStream(filepath); Writer out = new OutputStreamWriter(outFile,"UTF-8"); OWLModelWriter omw = new OWLModelWriter(owlModel, owlModel.getTripleStoreModel().getActiveTripleStore(), out); omw.write(); out.close(); 不过,这样写入以后,本体中的有些汉字变成编码了,不便于人阅读。
|
-- 作者:liqu121982 -- 发布时间:11/5/2007 11:39:00 AM -- hehe |
-- 作者:zhenzixiong -- 发布时间:7/10/2008 1:56:00 PM -- 谢谢你提供的解决方法 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
6,673.096ms |