jena mysql_学习元 · 运用jena将持久化到mysql的本体导出来并进行简单推理

一些基本配置和信息参见前一篇《运用jena将外部本体持久化到mysql》。运用jena将持久化到mysql的本体导出来并进行简单推理的代码如下:

import com.hp.hpl.jena.db.DBConnection;

import com.hp.hpl.jena.db.IDBConnection;

import com.hp.hpl.jena.db.RDFRDBException;

import com.hp.hpl.jena.ontology.OntModel;

import com.hp.hpl.jena.ontology.OntModelSpec;

import com.hp.hpl.jena.query.Query;

import com.hp.hpl.jena.query.QueryExecution;

import com.hp.hpl.jena.query.QueryExecutionFactory;

import com.hp.hpl.jena.query.QueryFactory;

import com.hp.hpl.jena.query.ResultSet;

import com.hp.hpl.jena.query.ResultSetFormatter;

import com.hp.hpl.jena.rdf.model.InfModel;

import com.hp.hpl.jena.rdf.model.Model;

import com.hp.hpl.jena.rdf.model.ModelFactory;

import com.hp.hpl.jena.rdf.model.ModelMaker;

import com.hp.hpl.jena.reasoner.Reasoner;

import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;

import com.hp.hpl.jena.reasoner.rulesys.Rule;

public class ReadFMySQL {

public static final String strDriver = "com.mysql.jdbc.Driver"; // path of driver class

public static final String strURL = "jdbc:mysql://localhost:3306/jena"; // URL of database

public static final String strUser = "root"; // database user id

public static final String strPassWord = "root"; // database password

public static final String strDB = "MySQL"; // database type

public static void main(String args[]) {

try {

// 创建一个数据库连接

IDBConnection conn = new DBConnection(strURL, strUser, strPassWord,strDB);

// 加载数据库驱动类,需要处理异常

try {

Class.forName(strDriver);

} catch (ClassNotFoundException e) {

System.out

.println("ClassNotFoundException, Driver is not available...");

}

// 使用数据库连接参数创建一个模型制造器

ModelMaker maker = ModelFactory.createModelRDBMaker(conn);

// 创建一个默认模型,命名为 MyOntology

Model defModel = maker.createModel("MyOntology");

// OntModel a=maker.createDefaultModel();

// OntModel wnOntology = ModelFactory.createOntologyModel();

OntModel onto=ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF, defModel);

Model instances=ModelFactory.createDefaultModel();

instances.add(defModel);

/*设置规则*/

String rule = "[rule1:(?x http://www.owl-ontologie.com/Expert.owl#research ?y) " +

"(?y http://www.owl-ontologies.com/Expert.owl#associate ?z) " +

"->(?x http://www.owl-ontologies.com/Expert.owl#familiar_with ?z)]";

/*查询SPARQL语句*/

String queryString = "PREFIX Expert: " +

"SELECT ?expert ?subject " +

"WHERE {?expert Expert:familiar_with ?subject} ";

/*创建推理机*/

Reasoner reasoner2 = new GenericRuleReasoner(Rule.parseRules(rule));

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

// 推理机与本体模型绑定

InfModel inf = ModelFactory.createInfModel(reasoner2, instances);

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

// 构造查询

Query query = QueryFactory.create(queryString);

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

// 执行查询

QueryExecution qe = QueryExecutionFactory.create(query, inf);

// 获取结果

ResultSet results = qe.execSelect();

/*打印结果*/

ResultSetFormatter.out(System.out, results, query);

qe.close();

System.out.print("over,sir!");

} catch (RDFRDBException e) {

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

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值