将OWL本体文件存储到MySQL数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[转发]实现将OWL本体文件存储到MySQL数据库
首先配置好开发环境,我采用的是Eclipse +
mysql-essential-5.1.51-win32,对于MySQL的JDBC选择的是
mysql-connector-java-5.0.8。

我把JDBC在D盘的根目录下解压缩,在环境变量中将JDBC的所在地址加入原有的 classpath中,然后开始存储本体文件工作。

1. 利用MySQL创建一个数据库:create database jena;
2. 打开Eclipse,新建一个Java工程,起名为Persistent。

3. 新建工程的同时,分别导入Jena包和MySQL的JDBC。

4. 在工程Persistent\src\目录下新建一个Java文件,名字为
Persistent.java;
5. 开始编写以下代码:
import java.io.*;
import java.sql.SQLException;
import com.hp.hpl.jena.db.*;
import com.hp.hpl.jena.rdf.model.*;
public class Persistent {
public static final String strDriver = "com.mysql.jdbc.Driver";
public static final String strURL = "jdbc:mysql://localhost:3306/jena"; // localhost的后面要直接写冒号,再写3306;
public static final String strUser = "root";
public static final String strPassword = "root";
public static final String strDB = "MySQL";
public static void main(String[] args){
try {
DBConnection connection = new DBConnection(strURL, strUser, strPassword, strDB);
// 创建连接时,第四个参数需要指定所用的数据库类型;也就是说strDB
的值应该是“MySQL”
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动程序已经安装。

");
} catch (ClassNotFoundException e){
System.out.println("ClassNotFoundException, Driver is not available");
}
System.out.println("数据库连接成功。

");
// 从此处开始读入一个OWL文件并且存储到数据库中;
ModelMaker maker = ModelFactory.createModelRDBMaker(connection); // 使用数据库连接参数创建一个模型制造器
Model defModel = maker.createModel("Costume");
// 创建一个默认模型,命名为Costume,因为我要存入的OWL文件名是Costume
FileInputStream read = null;
try{
File file = new File("e:/ontologies/BeijingOpera/Costume.owl");
read = new FileInputStream(file);
}catch (FileNotFoundException e){
e.printStackTrace();
System.out.println("未找到要存储的本体文件,请检查文件地址及名称"); }
System.out.println("已将本体文件转换为字节流文件。

");
InputStreamReader in = null;
try {
in = new InputStreamReader((FileInputStream)read, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
System.out.println("不支持上述字符集。

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

");
defModel.read(in,null);
try {
in.close();
} catch (IOException e){
e.printStackTrace();
System.out.println("无法关闭字节流文件。

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

");
mit();
System.out.println("数据转换执行完毕,已将本体文件存入数据库。

"); try{
connection.close();
} catch (SQLException e){
e.printStackTrace();
System.out.println("文件无法关闭。

");
}
} catch (RDFRDBException e){
System.out.println("出现异常");
}
System.out.println("已将本体文件持久化到数据库中");
}
}
6. 在代码的编写过程中遇到的第一个问题是,程序执行后总是提示:
Failure to instantiate DB Driver:jena
ng.ClassNotFoundException: com.hp.hpl.jena.db.impl.Driver_jena 解决办法:上述提示的意思是无法对指定的数据库文件进行实例化,仔细查看是因为创建数据库连接时的连接语句有辨别是问题,创建数据库的连接语句是:DBConnection connection = new DBConnection(strURL, strUser, strPassword, strDB);
这四个参数分别是指定数据库的URL,用户名称(即安装MySQL时创建的用户名),用户密码,以及所选择的数据库类型,所以最后一个参数应该是“MySQL”,我第一次把这个参数给写成了数据库的名称,所以出现“无法实例化数据库”的提示。

7. 遇到的第二个问题是:UTF-8字符集的指定总是提示出错,解决办法就是在文件前面加上该文件的类型,即:
in = new InputStreamReader((FileInputStream)read, "UTF-8");。

相关文档
最新文档