// 创建使用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.
getOntClass("http://www.owl-ontologies.com/marine.owl#Animal")
oc.addEquivalentClass(cls)// 将先前定义的类添加为Animal的等价类
// 迭代显示模型中的类,在迭代过程中完成各种 *** 作
for (Iterator i = ontModel.listClasses()i.hasNext()) {
OntClass c = (OntClass) i.next()// 返回类型强制转换
if (!c.isAnon()) { // 如果不是匿名类,则打印类的名字
System.out.print("Class")
// 获取类的URI并输出,在输出时对URI做了简化(将命名空间前缀省略)
System.out.println(c.getModel().getGraph().
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 ends
Jena由 HP Labs(中国至美.hpl.hp中国)发Java发工具包, 用于Semantic Web(语义中国)应用程序发;Jana源载文档Jena完整代码Jena框架主要包括: a) RDF/XML、三元组形式读写RDF 资源描述框架(RDF)描述资源项标准(技术W三C推荐标准)Jena文档部呢详细介绍RDFJena RDF API其内容包括Jena RDF包介绍、RDF模型创建、读写、查询等 *** 作及RDF容器等讨论 b) RDFSOWLDAML+OIL等本体 *** 作 Jena框架包含本体系统(Ontology Subsystem)提供API允许处理基于RDF本体数据说支持OWLDAML+OILRDFS本体API与推理系统结合特定本体提取信息Jena 贰提供文档管理器(OntDocumentManager)支持导入本体文档管理欢迎分享,转载请注明来源:内存溢出
评论列表(0条)