八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  240 随笔 :: 0 文章 :: 3330 评论 :: 14 引用

这个标题其实有点问题,因为本体/RDF本身并没有名称空间的概念,它们只关心绝对的URI;在Jena里一旦模型读进内存,就都是使用绝对URI标识资源的,而当使用xml格式存储的时候,才会引出这些xml中的概念。

最近遇到一个问题,在一个程序里要读取多个xml格式的本体文件(*.owl),它们之间有import关系,在读一个文件之前,我需要先确认该文件需要import的那些名称空间所对应的本体(此本体的缺省名称空间是import的值)是否存在,所以我必须知道每个.owl文件的缺省名称空间和import值(后者在这里暂不讨论),这样做的一个好处是不需要让Jena在找不到本地文件时去访问网络,造成延迟。

虽然Jena API没有提供直接得到它的方法,从一个.owl文件得到缺省名称空间的方法其实很简单,但com.hp.hpl.jena.shared.PrefixMapping接口有一个getNsPrefixURI()方法,利用它可以得到xml文档中每个prefix对应的名称空间。

什么是前缀(prefix)呢?prefix主要是为了简化xml的书写,例如下面的语句中,rdf就是prefix,这样在xml文档的其他地方就可以用"rdf:xxx"表示"http://www.w3.org/1999/02/22-rdf-syntax-ns#xxx"这一长串了。

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

有了这个方法,我们就可以得到rdf、owl、xsd等前缀对应的名称空间,而缺省名称空间对应的前缀是空字符串(""),因此使用model.getNsPrefixURI(""),而OntModel对象是实现PrefixMapping接口的。

当然,要得到一个xml文件的缺省名称空间有很多方法,只是在一个面向本体而不是xml的应用程序里,使用本体这个层次的API可能更合适一些。

posted on 2005-03-16 21:01 八进制 阅读(2025) 评论(6) 编辑 收藏

评论

看了你blog很多文章,内容不错。你现在在做哪方面的研究,能介绍一下吗?
 回复 引用   

#2楼[楼主] 2005-03-19 18:50 八进制      
谢谢你的鼓励。
我目前没有明确的方向,但对很多新技术感兴趣,基本都在blog里了:-)
 回复 引用 查看   

#3楼 2005-03-26 11:39 Brenbo[未注册用户]
呵呵学习中
 回复 引用   

#4楼 2005-09-05 14:27 study[未注册用户]
拜读了你的文章, 很有收益.能否请教你一个问题

现在的OWL对于namespace的支持不是很好. namespace在OWL Moduls的API 代码中写死.能否实现namespace的动态的扩展?

这问题我在W3C中登出, 但至今还没有回音

小妹在此先谢谢了
 回复 引用   

#5楼 2005-10-25 19:44 qinfenyu[未注册用户]
SelectorImpl这个类不能用,不知道是不是要导入除jena外别的jar
 回复 引用   

#6楼 2005-10-25 19:44 qinfenyu[未注册用户]
SelectorImpl这个类不能用,不知道是不是要导入除jena外别的jar
 回复 引用