有谁用过Jena,读取OWL文件的
1个回答
展开全部
例子的主要代码如下列出。 //创建使用OWL语言的内存模型 OntModelontModel=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); ontModel.read("file:./Creature.owl");//读取当前路径下的文件,加载模型 //定义一个类作为模型中Animal类的等等价类,并添加注释 OntClasscls=ontModel.createClass(":DongwuClass"); cls.addComment("theEquivalentClassofAnimal","EN"); //通过完整的URI取得模型中的Animal类 OntClassoc=ontModel. getOntClass("/marine.owl#Animal"); oc.addEquivalentClass(cls);//将先前定义的类添加为Animal的等价类 //迭代显示模型中的类,在迭代过程中完成各种操作 for(Iteratori=ontModel.listClasses();i.hasNext();){ OntClassc=(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'sEquivalentClassis"+ c.getEquivalentClass()); //输出等价类的注释 System.out.println("[comments:"+ c.getEquivalentClass().getComment("EN")+"]"); }//处理Animal结束 //迭代显示当前类的直接父类 for(Iteratorit=c.listSuperClasses();it.hasNext();) { OntClasssp=(OntClass)it.next(); Stringstr=c.getModel().getGraph() .getPrefixMapping().shortForm(c.getURI())//获取URI +"'ssuperClassis"; StringstrSP=sp.getURI(); try{//另一种简化处理URI的方法 str=str+":"+strSP.substring(strSP.indexOf('#')+1); System.out.println("Class"+str); }catch(Exceptione){} }//superclassends //迭代显示当前类的直接子类 for(Iteratorit=c.listSubClasses();it.hasNext();){ System.out.print("Class"); OntClasssb=(OntClass)it.next(); System.out.println(c.getModel().getGraph().getPrefixMapping() .shortForm(c.getURI())+"'ssuberClassis" +sb.getModel().getGraph().getPrefixMapping() .shortForm(sb.getURI())); }//suberclassends //迭代显示与当前类相关的所有属性 for(Iteratoripp=c.listDeclaredProperties();ipp.hasNext();){ OntPropertyp=(OntProperty)ipp.next(); System.out.println("associatedproperty:"+p.getLocalName()); }//propertyends }//anonymityends
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询