Jena API 在OWL中应用的体会

为了更好的使用Jena API,我们应该对OWL有个大致的了解。OWL核心是围绕三元组的,即我们在很多资料中看到的陈述(Statement),它的组成为:Statement=(Subject,Property,Object),其中Subject我们熟成为主体,Property成为属性,Object成为客体。在编程中容易让人搞混的他们和Individual的区别。Individual熟称为个体。它是Subject、Object的一个实例,例如在Statement=(Animals,Eat,Plants)陈述中sheep是Animals的一个Individual,grass是Plants的一个Individual。从这个角度上来说我们理解为什么主体、客体被说成是类(Class)。而这一切的主体、客体、个体、类、属性等我们都可以称为资源(Resource)。在编程中OWL常用的是OntModel,Ontclass,OntProperty,Individual。OntClass可以用来创建主体,客体,OntPropety用来创建属性,Individual用来创建个体。 常用的方法有CreatClass,CreatIndividual,listObjects,listObjectsofProperty,listSubjectswithProperty,listPropertyvalues等,具体可以参照下面的一个简单例子。

 

public static void main(String[] args){

OntModel ontmodel=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);

String NS="http://OWLTEST/Things#";

//动物类和动物名称类

OntClass animals=ontmodel.createClass(NS+"Animals");

OntClass animalsname=ontmodel.createClass(NS+"AnimalsName");

//植物类和植物名称类

OntClass plants=ontmodel.createClass(NS+"Plants");

OntClass plantsname=ontmodel.createClass(NS+"PlantsName");

//动物类和植物类的对象关系rant

OntProperty rant=ontmodel.createObjectProperty(NS+"Rant");

 

OntProperty hasanimalsname=ontmodel.createObjectProperty(NS+"HasAnimalsName");

OntProperty hasplantsname=ontmodel.createObjectProperty(NS+"HasPlantsName");

 

OntProperty hasname=ontmodel.createDatatypeProperty(NS+"HasName");

hasanimalsname.addDomain(animals);

hasanimalsname.addRange(animalsname);

 

hasplantsname.addDomain(plants);

hasplantsname.addRange(plantsname);

 

rant.addDomain(animals);

rant.addRange(plants);

 

hasanimalsname.addDomain(animals);

hasanimalsname.addRange(animalsname);

 

hasplantsname.addDomain(plants);

hasplantsname.addRange(plantsname);

 

hasname.addDomain(animalsname);

hasname.addDomain(plantsname);

 

Individual a=animals.createIndividual(NS+"A");

Individual b=animals.createIndividual(NS+"B");

 

Individual sheep=animalsname.createIndividual(NS+"Sheep");

Individual horse=animalsname.createIndividual(NS+"Horse");

 

a.addProperty(hasanimalsname, sheep);

 

animalsname.addProperty(hasname, sheep);

animalsname.addProperty(hasname, horse);

Individual grass=plants.createIndividual(NS+"Grass");

System.out.println(ontmodel);

System.out.println("..............................");

 

for(Iterator i=ontmodel.listObjects();i.hasNext();){

Resource r=(Resource)i.next();

System.out.println(r.getLocalName());

}

System.out.println("..............................");

 

for (Iterator i=ontmodel.listIndividuals();i.hasNext();){

Individual ind=(Individual)i.next();

System.out.println(ind.getLocalName());

}

System.out.println("..............................");

 

for (Iterator i=ontmodel.listObjectProperties();i.hasNext();){

Property p=(Property)i.next();

System.out.println("Property:"+p.getLocalName());

for (Iterator j=ontmodel.listObjectsOfProperty(p);j.hasNext();){

Resource node=(Resource)j.next();

System.out.println("Objects:"+node.getLocalName());

}

}

System.out.println("..............................");

 

for (Iterator i=animalsname.listPropertyValues(hasname);i.hasNext();){

Resource value=(Resource)i.next();

System.out.println("HasName's values:"+value.getLocalName());

}

System.out.println("..............................");

}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值