jena 开发之 mysql数据导入

最近公司须要搞sparql,让我作c++开发情何以堪,第一次搞JAVA,有错误还请你们指正出来,好了不废话了,进入正题。java


最新版的jena经过SDB的方式访问并存储三元组数据。node

要使用mysql须要下载JDBC驱动,能够前往mysql的官网下载http://dev.mysql.com/downloads/connector/j/mysql

若是使用SDB的方式操做数据库的话,咱们须要在二者之间创建一个关联c++

这个关联的类能够使用Store,一个关联只能建立一个Storesql

第一步 创建链接:数据库

// 链接标识符
StoreDesc desc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL);
// 加载mysql驱动
JDBC.loadDriverMySQL();
SDBConnection conn = new SDBConnection("jdbc:",
                                     "admin", "admin");
Store store = SDBFactory.connectStore(conn, desc);

在这段代码中,首先咱们建立一个链接标识,三元组<主,谓,宾>or<s,p,o>之间使用哈希标识(LayoutType.LayoutTripleNodesHash)
测试

数据库类型为mysql。看下图能够更好的理解 何为 hash关联。
spa

其次是加载一个mysql的驱动;code

最后咱们建立链接,并使用工厂类 SDBFactory建立Store与jena之间创建关联。orm

第二步  导入数据:

若是是第一次访问mysql数据库的话(数据库中没有任数据),咱们须要建立一个格式化好的表,咱们必须保证这段代码只能执行一次,若是数据库中存在数据的话,这段代码将会有异常抛出。

// 初次链接须要建立三元组数据库格式表
if( StoreUtils.isFormatted(store) == false)
{
    System.out.println("create table format and truc data");
    store.getTableFormatter().create();
    // store.getTableFormatter().truncate();// 清空数据
}

紧接着咱们能够导入数据,方式能够使用  Graph、model等,这里我使用了graph的方式

// 导入测试数据
GraphSDB graph =  new GraphSDB(store);
Node node1 = Node.createURI("http://bar");
Node node2 = Node.createURI("http://car");
Node node3 = Node.createURI("http://dar");
graph.add(new Triple(node1,node2,node3));

第三步  关闭链接:

graph.close();
store.close();
conn.close();

完整用例:

public class JenaExe {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        try
        {
            // 链接标识符
            StoreDesc desc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL);
            // 加载mysql驱动
            JDBC.loadDriverMySQL();
            SDBConnection conn = new SDBConnection("jdbc:",
                                                            "admin", "admin");
            Store store = SDBFactory.connectStore(conn, desc);
            // 初次链接须要建立三元组数据库格式表
            if( StoreUtils.isFormatted(store) == false)
            {
                System.out.println("create table format and truc data");
                store.getTableFormatter().create();
                // store.getTableFormatter().truncate();// 清空数据
            }
            // 导入测试数据
            GraphSDB graph =  new GraphSDB(store);
            Node node1 = Node.createURI("http://bar");
            Node node2 = Node.createURI("http://car");
            Node node3 = Node.createURI("http://dar");
            graph.add(new Triple(node1,node2,node3));
            graph.close();
            store.close();
            conn.close();
        }catch(SDBException err)
        {
            System.out.println("SDB Exception:"+err.getMessage());
        }
        catch(SQLException err)
        {
            System.out.println("SQL Exception:"+err.getMessage());
        }
    }
  
}
相关文章
相关标签/搜索