Jena之外的选择:protégé-owl API

Written on April 30, 2007 – 10:54 pm | by 陈炬 | 1 views

一般做基于语义网的开发,Jena是最为常用的API,Jena提供了一整套完整的解决办法,特别是在对于本体的持久化方面,做的很不错。因此,一般做基于本体的应用常常采用Protege来制作本体,定义各种关系,然后在程序中采用Jena提供的API对本体进行操作。

Jena是极好的选择,但不是唯一的选择。大家写程序的时候可能常常会有这样的感觉,我在Protege中很轻松的做了这件事情,可是用Jena在程序中实现怎么这么麻烦。你可能会想到要实现几个跟Protege中一样的功能,但是你不知道怎么做。有没有Protege提供的API呢?有的,对于本体,Protege不仅仅提供了编辑软件,还提供了一整套的API,我翻过几下Protege源码,到处都用到了Jena,这个Protege的提供API是否是对Jena的再次封装,我还没细看,不大清楚。但使用的方便性据说是要好于Jena的,我想应当也是如此。另外,使用protégé-owl API有个较好的理由应该是程序可以利用protégé-owl API持久化到数据库的本体可以在直接在Protege软件中读取,既利用Protege软件做的OWL Database与利用这个protégé-owl API持久化后的格式是一致的,感性的讲,采用Protege持久化到数据库方式可能会比Jena持久化本体到数据库的方式性能方面要好一些。

下面给个例子,从这里看似乎与Jena没太大分别哦。

OWLModel owlModel = ProtegeOWL.createJenaOWLModel();
OWLNamedClass worldClass = owlModel.createOWLNamedClass("World");
System.out.println("Class URI: " + worldClass.getURI());

在看看下面几行代码,似乎是比Jena要舒服点,至少找类找属性等等不用自己一个一个去遍历了。

OWLNamedClass destinationClass = owlModel.getOWLNamedClass("Destination");
OWLObjectProperty hasContactProperty = owlModel.getOWLObjectProperty("hasContact");
OWLDatatypeProperty hasZipCodeProperty = owlModel.getOWLDatatypeProperty("hasZipCode");
OWLIndividual sydney = owlModel.getOWLIndividual("Sydney");

我在写程序的时候,对Jena的API进行了些简单的封装,也能提供类似的功能。

Rating: 3.1/5 (8 votes cast)

推荐购买的书籍--都是牛书

相关文章

Most Commented Posts

我来说下

关于

我叫陈炬,正在天津大学计算机学院->知识工程与科学研究所攻读硕士研究生。今年应届。您可以在我的自我介绍获得更多关于我的信息

订阅我的Blog


本站RSS地址| [这是什么?]
订阅到Google Reader | 订阅到 抓虾 阅读器 | 订阅到 鲜果 阅读器

其他blog

我还有一个英文blog,非常的无聊,琐碎,许多的语法错误。请谨慎访问。
Find entries :