jena 简单查询2(推理)

原创 2013年12月05日 14:12:26
//DbUtil连接数据库
//a likes b,b likes c-> a likes c
  


import com.hp.hpl.jena.rdf.model.*;  
import com.hp.hpl.jena.db.DBConnection;
import com.hp.hpl.jena.db.IDBConnection;
import com.hp.hpl.jena.db.ModelRDB;
import com.hp.hpl.jena.ontology.*;  
import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
import com.hp.hpl.jena.reasoner.rulesys.Rule;
import com.hp.hpl.jena.util.PrintUtil;


public class TestJena  {
	

	static String URI="http://owl.man.ac.uk/2006/07/sssw/people#";
	static String filePath="F:\\Ontology1385473236444.owl";
		public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建一个默认本体
		TestJena st=new TestJena();
		//规则前缀
		 PrintUtil.registerPrefix("iqas", URI);
		 try{
		 DbUtil.getConnection().cleanDB();
		 }catch( Exception e){}
		 ModelMaker mMaker=st.getModelMaker(DbUtil.getConnection());
		 Model base=mMaker.createModel(URI,false);
			//建立本体模型,内存OWL_DL模型,无base;
		 OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM,base);
		//通过本体得到其关联的文档管理器
		OntDocumentManager dm = m.getDocumentManager();
		//在文档管理器中将要导入的文档与一个统一资源定位符关联;
		dm.addAltEntry( URI, "file:"+ filePath    );
		//读取文档到模型中;
		 m.read( URI);
		 
		//定义规则
		 String rule=
		 "[r1:(?a iqas:likes ?b),(?b iqas:likes ?c)->(?a iqas:likes ?c)]"+
		 "[r2:(?a iqas:has_pet ?b)->(?a iqas:likes ?b)]"+
		 "[r2:(?a iqas:likes ?b)->(?a iqas:like ?b)]";
		  String query="PREFIX iqas:<http://owl.man.ac.uk/2006/07/sssw/people#> SELECT ?x WHERE {iqas:Com1 iqas:likes ?x }";
		  
		  Reasoner reasoner=new GenericRuleReasoner(Rule.parseRules(rule));
		  
		  InfModel infModel=ModelFactory.createInfModel(reasoner, m);

		Query qu1=QueryFactory.create(query);
		QueryExecution exc=QueryExecutionFactory.create(qu1,infModel);
		ResultSet rst=exc.execSelect();

		ResultSetFormatter.out(System.out,rst,qu1);
		

		//m以mMaker为基础,所以存有数据库连接信息
		 m.commit();
		  m.close();
		  
		  IDBConnection icon=DbUtil.getConnection();
		  //构造ModelRDB 从数据库中取出存入的模型,用到连接和名字
		  ModelRDB mModel= ModelRDB.open(icon, URI);

		
	}
	public ModelMaker getModelMaker(DBConnection con){
		   try {
	            // Create a model maker object
			   
	            return ModelFactory.createModelRDBMaker(con);
	        }
	        catch (Exception e) {
	            e.printStackTrace();
	            System.exit( 1 );
	        }
	        return null;
		
	}

}


 

jena中关于本体操作的几个代码。(自己看的笔记)

package com.moms.service; import java.io.FileInputStream; import java.io.InputStream; import ja...
  • caozhenyu
  • caozhenyu
  • 2013年03月27日 23:25
  • 4336

jena中关于本体操作的几个代码。(自己看的笔记)

package com.moms.service; import java.io.FileInputStream; import java.io.InputStream; import ja...
  • caozhenyu
  • caozhenyu
  • 2013年03月27日 23:25
  • 4336

jena 简单查询(不带推理,直接读取owl文件)

用的是protege 里面的people demo import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.ontology.*; ...
  • limbo_c
  • limbo_c
  • 2013年11月28日 12:21
  • 2022

用Jena解析本体Ontology Jena的使用 Jena实例

环境 Ubuntu 13.10 Eclipse Kepler Service Release 2
  • shunbenben
  • shunbenben
  • 2014年04月21日 22:01
  • 3232

Jena2提供的规则推理引擎

翻译自Jena文档。 一,简介 Jena2提供的规则推理引擎支持前向链、后向链以及二者混合的推理执行模型,更准确地说,Jena有两个内部规则引擎:前向链推理RETE引擎和一个tabled da...
  • zhoubl668
  • zhoubl668
  • 2013年12月12日 18:38
  • 4377

Jena查询(推理机)

  • 2010年04月03日 08:44
  • 38KB
  • 下载

【6.15日总结】Jena推理案例设计思考二

 鉴于昨天的结论,今天在本体中补上了几个子属性关系、传递关系,想验证一下Jena API的推理功能:        我在旅游本体中加入了一个新类“#旅游目的地”,我按照特色的不同建了五个子类“...
  • zdlzwk
  • zdlzwk
  • 2015年09月30日 14:26
  • 915

本体(ontology)学习之我见——Jena规则编写——中文显示与owl:inverseOf推理结果不全

Jena 推理规则 中文显示 owl:inverseOf 逆关系 逆属性
  • goodbaby728
  • goodbaby728
  • 2011年04月26日 22:48
  • 2372

Jena 本体推理规则(Rules)的介绍

本体的推理规则库是有一条条规则组成的。每条规则由主体(body)和头(head)组成,一条规则可以有一个主体和一个头,例如规则:[rule1:(?a fa:hasHusband ?b)(?a fa:i...
  • yangchang999
  • yangchang999
  • 2011年03月27日 17:27
  • 10308

推理机Jess、Racer、Jena 比较

Jess(Java Expert Shell System)是基于Java语言的CLISP推理机。 CLISP是基于产生式的前向推理引擎,它是一种非常基础性的东西,许多上层的推理任务,都要映射到这个推...
  • neofung
  • neofung
  • 2012年11月01日 10:46
  • 1693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jena 简单查询2(推理)
举报原因:
原因补充:

(最多只允许输入30个字)