资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
使用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 使用两类七个表存储本体,第一类是asser ted stat emen ts,第二类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 Li terals Table (Jena_Long_L it):存储陈述表中不便于直接 存储的长字符创常量(Literals)5) Long Resources Table (Jena_Long_URI):存储陈述表中不便于直 接存储的长资源 URI6) Prefixes Table (Jena_Prefix):存储 URI 的前缀。前缀只存储一 次,节省空间。7) Graph Table (Jena_Graph):存储每一个用户图的名字和唯一标志 符。8) Lock Table (Jena_Mutex): 一个没有内容的表。如果该表存在,在 一定时间段里数据库被锁定。可以参照Jena-2.5docDBlayout.html获取各个表的详细信息。3 创建本体的持久模型Jena同时支持内存模型和数据库模型。一般来讲,创建内存模型只需要调用Jena 的一些接口,但创建数据库模型,或者打开先前创建 的模型,要求一些具体的步骤。任何数据库的持久模型通过以下步骤创建:1) 加载数据库 JDBC 驱动2) 创建数据库连接3) 为数据库创建一个 ModelMaker4) 为本体创建一个模型4 将本体存入 MySQL使用Jena将本体出入MySQL中的OntoDatabase数据库。完整代码如下: Java代码症lavaffi 码 _2.3.4.5.6.*将本体存入MySQLjavajavasql.SQLException;匚 om.hp-Bh 口1 .jena import import import importpublicclass Onto2Database8.9.publicstaticfinalStringstrDriver = comBmiysq 1 jdbc . Driver; /path of driver clas10.publicstaticfinalStringstrURL = jdbc:mysql:/localhost/OntoDB; / URL of databaspublic public publicstaticstaticstaticfinalfinalfinalStringStringStringstrUser = root; /database user idstrPassWord = onto; /database 口asswordstrDB = JlySQIL; /database typ已publicstaticvoid main(String args)匚 om.hp-Bh 口1 .jena rdf .model20.21.22.23.24.25.26.27.28.29.30.31.try/创淫一牛數据库连接IDB匚门门已匚ticm conn = new DB匚onn已匚ticm ( strURLj strUserj strPassWardstrD);/加载数据库呃动类,需要处理异常try匚lass.forNa me(st rDr i ver);catch(ClassNlot Found Except ion e) System out. println ( Driver is not available .)/使用数据库连接参数创逹一平模型制造器ModelMaker nuak =Model Fact ory. cir eat eModel RDBMakeir( conn);/创逹一个默:认模型“命名为HyOntology31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.5S.59.60.61.62.63.64./创建一个默认模型命名为MlyOntologyModel defHodel = ma k e rc re at eMo d e1(MyOnt ology);堆备需要存入数据库的本体文件建立输入文件流Fileinput St ream inputSreainfile = null;try File file = newFile( G: WeclipseWworkspace .thesisdataMyOntology .owinputSreamrfil已=new Fil已I门pu5士厂已日已); catch (FileNotFoundException e) e Bprint5tackTrace();System.out B printIn(Ontology File is not available ;InputStreamReader in = null;try in = new InputStr已aeR已日d已r(inputSr已amrfile!UTF-S); catch (Unsupport已dE门匸odi门gE贰匸已ption e) e Bprint5tackTrace();读取文件defModeleadfinnull);/关闭输入疣读取器try in.close(); catch (IOExceptio-n e) e Bprint5tackTrace();执行数据转换将本体数据存入数据库defModel-commit();关闭数据库连接65.66.67.68.69.70.71.72.73.74.75.try conn Bclose(); catch (SQLException e) 已.printSta匚kT厂吕匚已();catch(RDFRDBException e)System.out.printlntExceptions occur; H :码结束5 查看数据库中的本体 执行程序之后,本体被存入 MySQL 数据库中。主要数据存在两个表中1)ontodatabase.jena_g1t1_stmt 存储了本体的数据信息2)ontodatabase.jena_sys_stmt 存储了本体的元数据信息可以通过命令行查看或者使用 MySQL GUI 客户端工具查看。建议使用后者。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号