Jena TDB 环境搭建以及几个工具的使用

6 篇文章 0 订阅
1 篇文章 0 订阅

简单的说,TDB是Jena提供的两个subsystem之一,另外一个叫做SDB。TDB使用triple store的形式对RDF数据提供持久性存储(persistent store), SDB则支持使用传统的关系数据库存储RDF数据。详细介绍可以参考Apache Jena页面http://jena.staging.apache.org/jena/index.html

在这个页面http://jena.staging.apache.org/jena/documentation/tdb/index.html上有针对TDB搭建以及其他相关的一些文档。其中有些细节说的不够具体,结合我自己的体验经历,在此总结一下tdb提供的几个命令行工具在cygwin下的使用心得。我所使用的tdb版本是,tdb-0.8.7,所有操作在win下使用cygwin执行。

tdb-0.8.7下载解压后的目录为E:\wxl-docs\codes\research_codes\jena\tdb-0.8.7, 该版本只提供了主要工具的shell scripts (在bin目录下),没有提供bat文件,所以在win下只能借助于cygwin工具。

首先需要设定TDBROOT,cygwin下使用:

$ TDBROOT=/cygdrive/e/wxl-docs/codes/research_codes/jena/tdb-0.8.7


----------------------------修订(2012-03-23)------------------------------------------------

此处如果按照这种形式(即无export)定义TDBROOT变量,在后面使用source tdb_init时会提示错误信息“/cygdrive/e/wxl-docs/codes/research_codes/jena/tdb-0.8.7/bin/tdb_path: line 5: /bin/make_classpath: No such file or directory”。找到 $TDBROOT/bin/tdb_path 文件并用vim打开后在第5行有语句 CP="$($TDBROOT/bin/make_classpath "$TDBROOT")",即这里需要用到 TDBROOT 变量。熟悉shell脚本的同学应该清楚 export 的用途,如果希望当前shell下定义的环境变量在新的shell(比如执行一个shell脚本时)下继续有效,则应使用export命令定义环境变量,所以解决这个问题的方法很简单,在TDBROOT定义的时候加上export。

$ export TDBROOT=/cygdrive/e/wxl-docs/codes/research_codes/jena/tdb-0.8.7  

NOTE: 在$TDBROOT/bin/tdb_init脚本中也有对TDBROOT环境变量的调用,在最初没加export定义TDBROOT时,tdb_init可以正常执行的原因是使用了 source 命令

----------------------------------------------------------------------------------------------------


为了方便的直接调用bin下的script,需要将/bin路径添加到PATH环境变量中

$ PATH=$PATH:$TDBROOT/bin

bin目录下的tdb_init 工具负责初始化工作,最主要的工作是提供java classpath,它是通过TDB_CP变量给定的。vim一下 tdb_init 会看到相关的使用注释,比如需要使用source命令执行该script。tdb_init通过另外调用make_classpath工具最终设定TDB_CP的值。

$ source tdb_init

该命令可以正常执行,无提示错误。但是echo $TDB_CP后会发现此时的classpath下的路径是cygwin路径,根据我在上一篇文章的提示,该路径是没有办法被java命令识别的,所以试图执行java命令必然导致java.lang.NoClassDefFoundError,所以需要用到 cygpath 工具。cygpath对TDB_CP的转换过程,可以通过修改make_classpath脚本做到,当然也可以直接在shell下做临时处理。

classpath设定好之后就可以正常使用tdb提供的所有工具了。当然上面的几个命令可以写成一个script,这个不难。


另外,tdb主要工具总结:

tdbloader 该工具可以将普通的RDF数据文件(格式不限)加载成tdb model,其实就是tdb在本地的持久化存储目录(包含多个文件)

tdbstats 可以统计tdb model下的数据信息,所生成的文件是sse格式,可以用做stats.opt查询优化标记文件

tdbquery 查询工具,注意几个有用的参数 --time, --debug


最后关注一下none.opt, fixed.opt, stats.opt三个文件的作用。http://jena.staging.apache.org/jena/documentation/tdb/optimizer.html这里有很详细的说明,不再赘述了。


中间参考了SO上的两个问答

[1] http://stackoverflow.com/questions/6089278/tdbloader-on-cygwin-java-lang-noclassdeffounderror

[2]http://stackoverflow.com/questions/9200940/how-to-load-large-ntriple-data-into-jena-tdb


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值