• 使用Jena将本体存入MySQL

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • 前言

    使用Jena将本体存入MySQL——文档和例子 
    iMarine http://iMarine.blog.163.com 
    注明:本文档参考Jena 2.5文档,使用Jena 2.5 API和MySQL 5.0.4-beta-nt数据库。MySQL驱动包使用的是mysql-connector-java- 3.1.10-bin.jar。

    • 1 Jena的数据库接口

    Jena提供了将RDF数据存入关系数据库的接口,Model、Resource、Query等接口可以用于访问和维护数据库里的RDF数据。在处理数据时,应用程序不必直接操作数据库(而是通过Jena的API),也不必知道数据库的模式。 
    Jena提供了支持MySQL、HSQLDB、PostgreSQ、Oracle和Microsoft SQL Server的程序接口。有些第三方提供其他数据库接口的支持。 
    可以参考Jena数据库文档获得数据库版本以及对应的JDBC驱动说明。

    • 2 Jena的数据库模式

    关系数据库存储RDF数据的一般模式是“三元组”,表有三列(主体、谓词、客体)每个RDF陈述(sataement)占用一行。有时候,添加第四列以表示客体是字符常量还是URI。 
    Jena 2采用一种denormalized的三元组存储方法,是存储空间和访问时间的一种权衡方法(a space-time trade-off)。Jena使用两类七个表存储本体,第一类是asserted statements,第二类reified statements。 
    Statement Tables 陈述表 
    1) Asserted Statement Table (Jena_GiTj_Stmt):存储本体数据 
    2) Reified Statement Table (Jena_GiTj_Reif):经过处理的本体数据 
    System Tables 系统表:存储元数据和陈述表中使用的较长的文字或者资源 
    3) System Statement Table (Jena_Sys_Stmt):存储系统元数据 
    4) Long Literals Table (Jena_Long_Lit):存储陈述表中不便于直接存储的长字符创常量(Literals) 
    5) Long Resources Table (Jena_Long_URI):存储陈述表中不便于直接存储的长资源URI 
    6) Prefixes Table (Jena_Prefix):存储URI的前缀。前缀只存储一次,节省空间。 
    7) Graph Table (Jena_Graph):存储每一个用户图的名字和唯一标志符。 
    8) Lock Table (Jena_Mutex):一个没有内容的表。如果该表存在,在一定时间段里数据库被锁定。 
    可以参照\\Jena-2.5\doc\DB\layout.html获取各个表的详细信息。

    • 3 创建本体的持久模型

    Jena同时支持内存模型和数据库模型。一般来讲,创建内存模型只需要调用Jena的一些接口,但创建数据库模型,或者打开先前创建的模型,要求一些具体的步骤。 
    任何数据库的持久模型通过以下步骤创建: 
    1) 加载数据库JDBC驱动 
    2) 创建数据库连接 
    3) 为数据库创建一个ModelMaker 
    4) 为本体创建一个模型

    • 4 将本体存入MySQL

    使用Jena将本体存入MySQL中的OntoDatabase数据库。完整代码如下: 
    import java.io.*; 
    import java.sql.SQLException; 
    import com.hp.hpl.jena.db.*; 
    import com.hp.hpl.jena.rdf.model.*; 
    public class Onto2Database{ 
    public static final String strDriver = "com.mysql.jdbc.Driver"; // path of driver class 
    public static final String strURL = "jdbc:mysql://localhost/OntoDB"; // URL of database 
    public static final String strUser = "root"; // database user id 
    public static final String strPassWord = "onto"; // database password 
    public static final String strDB = "MySQL"; // database type 

    • 5 查看数据库中的本体

    执行程序之后,本体被存入MySQL数据库中。主要数据存在两个表中。 
    1) ontodatabase.jena_g1t1_stmt 存储了本体的数据信息 
    2) ontodatabase.jena_sys_stmt 存储了本体的元数据信息 
    可以通过命令行查看或者使用MySQL GUI客户端工具查看。建议使用后者。 
    本文地址:http://iMarine.blog.163.com/blog/static/51380183200822775118211/

    • 参考资料

    [1] iMarine http://iMarine.blog.163.com 
    [2] 对Jena的简单理解和一个例子 http://imarine.blog.163.com/blog/static/51380183200812774739130/ 
    [3] \\Jena-2.5\doc\DB\index.html 
    [4] \\Jena-2.5\doc\DB\layout.html 
    [5] \\Jena-2.5\doc\DB\mysql-howto.html

    • 标签:
    • jena
    • 本体
    • mysql
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论。
      
暂无内容~~
顶部