如何在数据库中存储OWL本体文件

安装必要的软件并配置开发环境

黯然失色

MySQL?服务器?5.5-win32

jena2.6.4

保护4.3

MySQL-connector-Java-5.1.35(MySQL的JDBC)

1.?用MySQL创建数据库:Create?数据库?军事_本体;

2.?打开Eclipse并创建一个名为military_ontology的新Java项目。(文件-新建-Java?项目,输入名称military_ontology,然后单击下一步)

3.?新建项目时,分别导入MySQL的Jena包和JDBC。(单击库-单击添加?外在?罐子,全部加。jar文件分别在JDBC和耶拿,C:\Program?Files\MySQL\MySQL?连接器?j和G:\Jena\lib目录,点击完成)

4.?创建一个新的Java文件(New-Class ),命名为military _ ontology.java在project military_ontology\src\目录下;

5.?开始在military_ontology.java中编写以下代码:

包裹?军事_本体;

进口?Java . io . *;//导入IO包的所有类。

进口?Java . SQL . SQL exception;//导入SQL相关异常处理包

进口?com . HP . HPL . jena . db . *;//导入jena链接数据库的包

进口?com . HP . HPL . jena . rdf . model . *;//导入jena关于模型的包

进口?com . HP . HPL . jena . ontology . ont model;//导入OntModel包

进口?com . HP . HPL . jena . ontology . ontmodelspec;//导入OntModelSpec包

模特?defModel?=?null

如果(连接。contains model(" militaryDB "))//确定名为military db的模型是否已经有数据。

{

defModel?=?maker.openModel("militaryDB ",true);//如果数据存在,则打开此模型。

System.out.println("打开现有模型");?

}

其他

{ ?

defModel?=?maker . create model(" military db ");//如果数据不存在,则创建此模型。

System.out.println("创建新模型");

}

OntModelSpec?规格?=?新的?OntModelSpec(OntModelSpec。猫头鹰_ MEM);

OntModel?DBModel?=?model factory . createontologymodel(规格,?def model);

//将临时模型转换为本体模型(OWL格式),其中spec参数表示模型存在于内存中。

FileInputStream?读书?=?null//定义并初始化文件输入流变量read

尝试

{

文件?文件?=?新的?文件(" g:/毕业设计/软件/本体实例/本体1428926241032/本体1428926241032。猫头鹰”);

读书?=?新的?FileInputStream(文件);//读取OWL本体文件

}

接住?(FileNotFoundException?E)//抓取读入文件时出现异常

{

e . printstacktrace();

System.out.println("没有找到要存储的本体文件,请检查文件地址和名称");

}

System.out.println("本体文件已经转换成字节流文件。");

InputStreamReader?在?=?null//在中定义并初始化输入流转换变量

试试?

{

在?=?新的?InputStreamReader((file inputstream)read,?“UTF-8”);//将字节流文件转换为UTF 8编码

System.out.println("字节流文件已转换为UTF-8编码。");?

}?

接住?(UnsupportedEncodingException?E)//抓取转换异常

{

e . printstacktrace();

不支持上述字符集。);

}

defModel.read(in,null);//将流文件读入数据库模型

def model . commit();//将模型保存到数据库。

System.out.println("数据转换完成,本体文件已经存储在数据库中。");

试试?

{

in . close();

System.out.println("字节流文件已关闭。");?

}?

接住?(IOException?E)//抓取输入输出异常。

{

e . printstacktrace();

System.out.println("无法关闭字节流文件。");

}

尝试

{

connection . close();//关闭连接

System.out.println("连接已关闭。");

}?

接住?(SQLException?e)

{

e . printstacktrace();

System.out.println("无法关闭连接。");

}

}?

接住?(RDFRDBException?e)

{

System.out.println("发生异常");

}

System.out.println("本体文件已经无异常持久化到数据库");

}

}

执行程序后,本体存储在MySQL数据库中。数据库将生成以下表格:

Jena_g1t0_reif存储处理后的本体数据。

Jena_g1t1_stmt存储本体的数据信息。

Jena_graph存储每个用户图的名称和唯一标识符。

耶拿_龙_利特?将不方便直接存储的长字符常量存储在语句表中。

jena_long_uri?将不便于直接存储的长资源URIs存储在语句表中。

Jena_prefix存储URI的前缀。前缀只存储一次,节省了空间。

Jena_sys_stmt存储本体的元数据信息。

主要数据存在于两个表中。

1)军事_本体. jena_g1t1_stmt?存储本体的数据信息。

2)military _ ontology . jena _ sys _ stmt?存储本体的元数据信息。