使用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());

}

}

此主题相关图片如下:

相关推荐