jena实例
来源:互联网 发布:linux 备份系统日志 编辑:程序博客网 时间:2024/04/29 13:09
摘自:http://imarine.blog.163.com/blog/static/51380183200812774739130/
本文实现了一个简单的例子。通过Protégé 3.1创建一个Creature本体,并将其存储到OWL文件Creature.owl,然后使用和Jena通过读取该文件创建本体模型,实践Jena中的一些Ontology API。本文不涉及如何使用Protégé 3.1创建本体,您可以到Protégé的主页或者是http://www.chengtao.name/modules/wordpress/寻找详细的资料,后者虽然只是一个博客,但确实提供了很多我们需要的资源,比如一个完整的Protégé使用教程。本文例子中对Jena的使用主要参照Jena文档中\\Jena-2.4\src-examples\jena\examples\ontology下面的describeClass。它读取food.owl和wine.owl两个文件建立本体模型,并显示模型中概念以及相关关系的详细信息。DescribeClass.java主要负责查询详细信息并显示出来,Main.java只是创建本体模型并调用DescribeClass.java的功能。
本体类层次图
例子的主要代码如下列出。
// 创建使用OWL语言的内存模型OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);ontModel.read("file:./Creature.owl"); // 读取当前路径下的文件,加载模型// 定义一个类作为模型中Animal类的等等价类,并添加注释OntClass cls = ontModel.createClass(":DongwuClass");cls.addComment("the EquivalentClass of Animal...", "EN");// 通过完整的URI取得模型中的Animal类OntClass oc = ontModel.getPrefixMapping().shortForm(c.getURI())); // 处理Animal类if (c.getLocalName().equals("Animal")) { // 如果当前类是Animal System.out.println(" URI@" + c.getURI()); // 输出它的完整URI // 取得它的的等价类并打印 System.out.print(" Animal's EquivalentClass is "+c.getEquivalentClass()); // 输出等价类的注释System.out.println(" [comments:" +c.getEquivalentClass().getComment("EN")+"]");}// 处理Animal结束 // 迭代显示当前类的直接父类for (Iterator it = c.listSuperClasses(); it.hasNext();){ OntClass sp = (OntClass) it.next(); String str = c.getModel().getGraph() .getPrefixMapping().shortForm(c.getURI()) // 获取URI + "'s superClass is " ; String strSP = sp.getURI(); try{ // 另一种简化处理URI的方法 str = str + ":" + strSP.substring(strSP.indexOf('#')+1); System.out.println(" Class" +str); }catch( Exception e ){}} // super class ends // 迭代显示当前类的直接子类for (Iterator it = c.listSubClasses(); it.hasNext();){System.out.print(" Class");OntClass sb = (OntClass) it.next();System.out.println(c.getModel().getGraph().getPrefixMapping() .shortForm(c.getURI())+ "'s suberClass is " + sb.getModel().getGraph().getPrefixMapping() .shortForm(sb.getURI()));}// suber class ends// 迭代显示与当前类相关的所有属性for(Iterator ipp = c.listDeclaredProperties(); ipp.hasNext();){ OntProperty p = (OntProperty)ipp.next(); System.out.println(" associated property: " + p.getLocalName()); }// property ends}// anonymity endselse // 是匿名类{}}// for ends 部分输出结果如下,说明部分不在输出中。Class:Animal URI@http://www.owl-ontologies.com/marine.owl#Animal // 完整的URI// 等价类及其注释 Animal's EquivalentClass is :DongwuClass [comments:the EquivalentClass of Animal...] Class:Animal's superClass is :Creature // 直接父类 Class:Animal's suberClass is :MixAnimal // 直接子类 Class:Animal's suberClass is :GrassAnimal Class:Animal's suberClass is :MeatAnimal associated property: eat // 关联属性 associated property: beEated associated property: mainEat
- jena实例
- 用Jena解析本体Ontology Jena的使用 Jena实例
- Jena API的使用以及实例
- Jena进阶(一):简介+创建本体实例
- 语义网技术:jena的使用(1)——环境以及实例
- owl jena
- Jena简介
- Jena TDB
- jena简介
- jena简介
- Jena 总结
- Jena test
- Jena 简介
- Jena学习
- Jena学习
- 学习 Jena
- Apache Jena (3) ---- Using Jena with Eclipse
- jena学习思路
- Http_Status_Codehttp响应状态码
- ACM zoj 1955(四分树实现)
- 可可肉的逻辑题---(九)可可肉的水仙花(上)
- 《经典精彩Lib翻译》系列之libiconv (3)ICONV_OPEN函数
- 深入理解Hadoop集群和网络
- jena实例
- 《经典精彩Lib翻译》系列之libiconv (4)ICONV函数
- 开发servlet的三种方法
- JDBC框架
- Python:文件操作技巧(File operation)
- 《经典精彩Lib翻译》系列之libiconv (5)ICONV_CLOSE函数
- 《经典精彩Lib翻译》系列之libiconv (6)ICONVCTL函数
- JavaScript世界的一等公民 - 函数
- HibernateGenericDao源码