jena保存本体到数据库中

http://blog.tianya.cn/blogger/post_read.asp?BlogID=797111&PostID=28461722


import java.util.Iterator;


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


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


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


  
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 sparqltuili{


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


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


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


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


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


  
public static void main(String[] args){


  


  
try{


  
// 创建一个数据库连接


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


  


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


  
try{


  
System.out.println(strDriver);


  
Class.forName(strDriver);


  
}catch(ClassNotFoundException e) {


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


  
}


  
String filePath = "file :C:\\Program Files\\Protege_3.1\\Animal.owl";


  


  
sparqltuili.createDBModelFromFile(con, "1protege_db",filePath);


  
OntModel model = sparqltuili.getModelFromDB(con, "1protege_db");


  
sparqltuili.simpleReadOntology(model);


  


  


  
String rule = "[rule1:(?x http://www.owl-ontologies.com/Animal.owl#Belonging ?y) " +


  


  
"->(?y http://www.owl-ontologies.com/Animal.owl#Belonged ?x)]";


  


  
/*查询语句*/


  
String queryString = "PREFIX Animal:<http://www.owl-ontologies.com/Animal.owl#> " +


  
"SELECT ?Zoo ?Herbivore " +


  
"WHERE { ?Zoo Animal:Belonged ?Herbivore} ";


  


  
/*创建推理机*/


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


  


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


  
Query query = QueryFactory.create(queryString);


  


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


  
ResultSet results = qe.execSelect();


  
/*打印结果*/


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


  
qe.close();


  
}catch(Exception e){e.printStackTrace();}}


  


  
/* 从文件读取本体并将其存入数据库 */


  
public static OntModel createDBModelFromFile(IDBConnection con, String name,


  
String filePath) {


  
ModelMaker maker = ModelFactory.createModelRDBMaker(con);


  
Model base = maker.createModel(name);


  
OntModel newmodel = ModelFactory.createOntologyModel(


  
getModelSpec(maker), base);


  
newmodel.read(filePath);


  
return newmodel;


  
}


  
/* 从数据库中得到已存入本体 */


  
public static OntModel getModelFromDB(IDBConnection con, String name) {


  
ModelMaker maker = ModelFactory.createModelRDBMaker(con);


  
Model base = maker.getModel(name);


  
OntModel newmodel = ModelFactory.createOntologyModel(


  
getModelSpec(maker), base);


  
return newmodel;


  
}


  
public static OntModelSpec getModelSpec(ModelMaker maker) {


  
OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM);


  
spec.setImportModelMaker(maker);


  
return spec;


  
}


  
/* 简单读取本体中的各个class */


  
public static void simpleReadOntology(OntModel model) {


  
for (Iterator i = model.listClasses(); i.hasNext();) {


  
OntClass c = (OntClass) i.next();


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


  
}


  
}


  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值