Jena API使用详解(关注将本体持久化到MySQL后的操作及解决中文乱码等问题)

这篇博客介绍了如何使用Jena API将本体持久化到MySQL,包括从数据库中读取OntModel,读取本体类、属性和实例,以及处理中文乱码和推理机设置问题。作者分享了操作代码和遇到的挑战,如集合属性的处理、 Sparql查询中的问题以及Java进程管理。
摘要由CSDN通过智能技术生成

关于Jena的简介在很多博客中都能看到,例如对Jena的简单理解和一个例子使用Jena将本体存入MySQLJena进阶等。在入门的时候,看这些文章总是很疑惑,对于存入数据库后的操作一无所知。因此,在做项目之余,把使用到的一些方法记录下来,以供将来查阅。

将本体持久化到数据库

首先,还是不能免俗,说说如何将本体持久化到数据库的方法。总体的操作流程是将本体从owl文件中读出,建立一个数据库的连接,将Model存入数据库。这个过程的操作比较简单,见如下代码。其中需要注意的一点是:在这里的url设置是不正确的,这样设置的结果将导致中文乱码,正确的设置方法参见本文最后提到的问题解决方案。

	private final static String driver = "com.mysql.jdbc.Driver";
	private final static String url = "jdbc:mysql://localhost/dbname";
	private final static String db = "MySQL";
	private final static String user = "your user name";
	private final static String pwd = "your password";
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			IDBConnection con = getConnection(url, user, pwd, db);

			Class.forName(driver);

			String path = "your owl file path";
			createModel(con, "model name", path);

			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * get db connection
	 * 
	 * @param dbUrl
	 * @param dbUser
	 * @param dbPwd
	 * @param dbName
	 * @return
	 */
	public static DBConnection getConnection(String dbUrl, String dbUser,
			String dbPwd, String dbName) {
		return new DBConnection(dbUrl, dbUser, dbPwd, dbName);
	}

	/**
	 * read owl file, create the ontModel, and store in db
	 * 
	 * @param conn
	 * @param name
	 * @param filePath
	 * @return
	 */
	public static OntModel createModel(IDBConnection conn, String name,
			String filePath) {
		ModelMaker maker = ModelFactory.createModelRDBMaker(conn);
		Model model = maker.createModel(name);

		try {
			File file = new File(filePath);
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader isr = n
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值