以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  刚要入门,请问Jena和Protege是什么?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=44924)


--  作者:77932994
--  发布时间:4/5/2007 9:06:00 PM

--  刚要入门,请问Jena和Protege是什么?
大家好,我的方向也是语义网方面的,最近看了些论文,又发现了这个好网站,希望各位多多协助!
问个问题,Jena和Protege是什么,干什么用的?二者之间有联系吗?
望不吝赐教,谢谢!
--  作者:ztszhang
--  发布时间:4/5/2007 11:47:00 PM

--  
这些基本的知识,通过搜索自己完全可以解决,还可以锻炼自学能力
提问题,最好有选择性
--  作者:chenli97
--  发布时间:4/6/2007 4:00:00 PM

--  
jena是一个java开发工具包,用于开发语义网的应用系统,protege可以用来构建本体
--  作者:wskfn
--  发布时间:4/6/2007 7:29:00 PM

--  
在这个站点上找点入门的东西看
--  作者:mindview
--  发布时间:4/28/2007 10:15:00 PM

--  
我要毕设啊
--  作者:mindview
--  发布时间:4/28/2007 10:15:00 PM

--  
好难学啊,
--  作者:bzbc
--  发布时间:9/28/2007 9:59:00 PM

--  
一般来说,我们在Protege这样的编辑器里构建了本体,就会想在应用程序里使用它,这就需要一些开发接口。用程序操作本体是很必要的,因为在很多情况下,我们要自动生成本体,靠人手通过Protege创建所有本体是不现实的。Jena是HP公司开发的这样一套API,似乎HP公司在本体这方面走得很靠前,其他大公司还在观望吗?

可以这样说,Jena对应用程序就像Protege对我们,我们使用Protege操作本体,应用程序则是使用Jena来做同样的工作,当然这些应用程序还是得由我们来编写。其实Protege本身也是在Jena的基础上开发的,你看如果Protege的console里报异常的话,多半会和Jena有关。最近出了一个Protege OWL API,相当于对Jena的包装,据说使用起来更方便,这个API就是Protege的OWL Plugin所使用的,相信作者经过OWL Plugin的开发以后,说这些话是有一定依据的。

题目是说用Jena处理OWL,其实Jena当然不只能处理OWL,就像Protege除了能处理OWL外还能处理RDF(S)一样。Jena最基本的使用是处理RDF(S),但毕竟OWL已经成为W3C的推荐标准,所以对它的支持也是大势所趋。

好了,现在来点实际的,怎样用Jena读我们用Protege创建的OWL本体呢,假设你有一个OWL本体文件(.owl),里面定义了动物类(http://www.zoo.com/ont/Animal,注意这并不是一个实际存在的URL,不要试图去访问它),并且它有一些实例,现在看如下代码:

OntModel m = ModelFactory.createOntologyModel();
File myFile = ...;
m.read(new FileInputStream(myFile), "");
ResIterator iter = m.listSubjectsWithProperty(RDF.type, m.getResource("http://www.zoo.com/ont/Animal"));
while (iter.hasNext()) {
    Resource animal = (Resource) iter.next();
    System.out.println(animal.getLocalName());
}
和操作RDF(S)不同,com.hp.hpl.jena.ontology.OntModel是专门处理本体(Ontology)的,它是com.hp.hpl.jena.rdf.model.Model的子接口,具有Model的全部功能,同时还有一些Model没有的功能,例如listClasses()、listObjectProperties(),因为只有在本体里才有“类”和“属性”的概念。

上面的代码很简单,从ModelFactory创建一个OntModel,从指定文件把模型读到内存里。再下面的代码是一个例子,作用是取出模型中所有Animal的实例(Individual,也叫个体),并打印它们的名称。要从OntModel里取实例,也可以用listIndividuals()方法,只不过你得在得到的实例中判断它们是不是Animal的实例,我觉得不如用上面这种简易查询的方式来得方便。

Jena里扩展了很多Iterator,比如ResIterator、StmtIterator和NodeIterator等等,刚开始用会觉得很别扭,好象还不如都用java标准的Iterator,不知道Jena的设计者是怎么考虑的。要熟练掌握还是得对整个Jena的API有全局掌握才好。

在循环里,我们得到的每个元素都是一个Resource,因为本体里的任何东西都是资源,不论你想得到Subject、Property还是Object,在Jena里实际得到的都是资源(Resource),在Jena里,Property是Resource的子接口,而Jena并没有Subject或Object接口。(注:在OWL本体中,Subject->Property->Object组成一个三元组,例如:张小刚->父亲->张大刚;或者:绵羊多利->rdf:type->动物,rdf:type是一个特殊的属性,表示前者是后者的实例)


--  作者:sunrisee
--  发布时间:10/5/2007 11:15:00 AM

--  
呵呵,protege知道一点

--  作者:meazza
--  发布时间:10/11/2007 7:24:00 PM

--  
现在的任务是通过jena把protege构建的本体进行处理,例如读取,推理之类的.
--  作者:李宁
--  发布时间:7/16/2008 1:28:00 AM

--  
有点收获!谢谢!
--  作者:nana1812
--  发布时间:8/8/2008 9:09:00 AM

--  
偶也是刚开始学本体,
很受启发,
顶一下

--  作者:bandaotiehe
--  发布时间:10/26/2008 9:35:00 AM

--  
恩  这个帖子上说的好!顶顶!
--  作者:淡如菊
--  发布时间:5/31/2009 10:18:00 AM

--  
到底怎么用JENA处理本体的OWL文件呢 ? 我用ECLIPSE为平台 把JENA包调入 应该有什么显示结果呢?查阅资料但是没有详细介绍 不知道到底是怎样处理的,麻烦您给我说一下具体的步骤?求教 谢谢!
--  作者:chen1084
--  发布时间:3/28/2010 10:59:00 AM

--  
好,希望能再详细点
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
70.313ms