使用jena持久化OWL本体到MySQL
引自http://www.cnblogs.com/armymen1980/archive/2008/10/22/1316699.html
实现了OWL本体到MySQL的存储和读取,首先应该配置好环境,在项目中添加jena的相关包,值得注意的是MySQL的驱动和版本要一致。
我是用protege创建OWL本体,然后再从OWL文件中读取,存入MySQL数据库,注意在保存OWL本体的时候最好项目另存为的LANGUAGE选择RDF/XML,最好用UTF-8编码,这样读取出错的机会少一些,图片在附件中。
下面是操作的java代码:/* 连接数据库 */
publicstaticIDBConnectionconnectDB(StringDB_URL,StringDB_USER,
StringDB_PASSWD,StringDB_NAME){
returnnewDBConnection(DB_URL,DB_USER,DB_PASSWD,DB_NAME);
}
/*从文件读取本体并将其存入数据库*/
publicstaticOntModelcreateDBModelFromFile(IDBConnectioncon,Stringname,
StringfilePath){
ModelMakermaker=ModelFactory.createModelRDBMaker(con);
Modelbase=maker.createModel(name);
OntModelnewmodel=ModelFactory.createOntologyModel(
getModelSpec(maker),base);
newmodel.read(filePath);
returnnewmodel;
}/* 从数据库中得到已存入本体 */
publicstaticOntModelgetModelFromDB(IDBConnectioncon,Stringname){
ModelMakermaker=ModelFactory.createModelRDBMaker(con);
Modelbase=maker.getModel(name);
OntModelnewmodel=ModelFactory.createOntologyModel(
getModelSpec(maker),base);
returnnewmodel;
}public static OntModelSpec getModelSpec(ModelMaker maker) {
OntModelSpecspec=newOntModelSpec(OntModelSpec.OWL_MEM);
spec.setImportModelMaker(maker);
returnspec;
}下面是测试的代码,先从文件中读取,让后存入数据库中,再从数据库中读出。
publicstaticvoidtest(){
StringDB_URL="jdbc:mysql://localhost/expert";
StringDB_USER="root";
StringDB_PASSWD="root";
StringDB="MySQL";
StringDB_DRIVER="com.mysql.jdbc.Driver";
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
StringfilePath="file:C://expert//Expert.rdf-xml.owl";
IDBConnectioncon=JaneUtils.connectDB(DB_URL,DB_USER,DB_PASSWD,DB);
System.out.println(con);
JaneUtils.createDBModelFromFile(con,"expert",filePath);
OntModelmodel=JaneUtils.getModelFromDB(con,"expert");
JaneUtils.SimpleReadOntology(model);
}/* 简单读取本体中的各个class */
publicstaticvoidSimpleReadOntology(OntModelmodel){
for(Iteratori=model.listClasses();i.hasNext();){
OntClassc=(OntClass)i.next();
System.out.println(c.getLocalName());
}
}此主题相关图片如下: