`
wxl24life
  • 浏览: 293538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

简单的说,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

 

分享到:
评论

相关推荐

    Jena TDB的查询生成器JenaQBuilder-开源

    这是Jena TDB的查询生成器,它将查询构建为三重存储数据库。

    jena2.6.4.jar and jena2.6.4-src

    此外,`sdb.jar`则支持使用Apache Derby或Jena TDB(一种专为语义数据设计的本地存储系统)作为存储后端,提供高性能的本体数据管理。 对于开发者来说,源代码是理解软件工作原理和进行定制化开发的重要资源。在这...

    jena语义网络开发框架

    此外Jena还提供了非常实用的命令行工具(例如SPARQL查询、批量导入RDF数据等)和一个基于Jena框架构建的Web应用程序Fuseki。 学习Jena框架,一定要结合对于的语义技术的知识,这样才能更加快速地上手。

    apache-jena-3.8.0.zip

    在Jena中,有以下几个核心组件: 1. **Model**: Model 是Jena中的核心概念,它代表了一个RDF数据集。你可以通过API添加、删除和查询RDF三元组,构建和操作知识图谱。 2. **Fusion**: Fusion是Jena的融合工具,用于...

    apache-jena-2.7.0

    Apache Jena是一个开源框架,专为构建语义网...总的来说,Apache Jena 2.7.0是一个强大的工具,对于构建语义网应用和链接数据环境至关重要。通过深入学习和实践,开发者可以充分利用其特性,提升数据处理和分析的效率。

    Jena API使用手册

    最后,我们可以使用 `Reasoner.bindSchema(schema)` 方法将 schema 应用到几个实例数据中。 ```java Reasoner boundReasoner = reasoner.bindSchema(schema); InfModel inf = ModelFactory.createInfModel...

    对Jena的简单理解和一个例子

    本文将对 Jena 进行简单的介绍,并提供一个使用 Protégé 创建生物本体的实例,来帮助初学者更好地理解 Jena。 一、Jena 介绍 Jena 是 HP Labs 开发的 Java 开发工具包,用于 Semantic Web 应用程序开发。Jena ...

    jena实例实现

    在Java开发环境中,Apache Jena是一个强大的工具库,专门用于处理语义网、链接数据以及RDF(Resource Description Framework)和SPARQL查询等任务。RDF是一种标准模型,用于表示互联网上的信息,它允许数据以机器可...

    jena API 项目以及相关依赖

    在这个"jena API 项目以及相关依赖"中,我们有两个关键的测试类——Onto_JDBC_test 和 MySQL2Onto,它们涉及到将OWL文件与MySQL数据库之间的交互。 Onto_JDBC_test 类是针对将OWL文件的内容存入MySQL数据库的测试。...

    jena (jena 2.13版)官网最新

    综上所述,Jena 2.13版作为一个强大的语义网开发工具,为开发者提供了全面的API和基础设施,便于构建高效、灵活的语义网应用。无论是新手还是经验丰富的开发者,都能从中受益。通过下载并使用"apache-jena-2.13.0...

    apache jena 3.7.0和apache-jena-fuseki3.7.0

    在使用Apache Jena 3.7.0和Apache Jena Fuseki 3.7.0时,开发者需要注意以下几点: - **学习曲线**:虽然Jena提供了丰富的功能,但理解和掌握其全部功能可能需要一定的学习时间。 - **性能优化**:根据数据规模选择...

    apache-jena-2.7.2.zip

    5. **TDB存储**:TDB是Jena中的一个高效、可扩展的RDF数据存储解决方案,专为大量数据设计。它将RDF数据存储在文件系统中,同时提供高效的查询性能。 6. **示例和文档**:在压缩包的example目录下,你可能会找到...

    jena语义框架3.7.0

    3. **TDB**:TDB是Jena的一个持久化存储系统,专为大规模RDF数据设计,提供高效且可扩展的存储解决方案。 4. **ARQ**:ARQ是Jena的SPARQL查询引擎,支持标准SPARQL语法,包括SELECT、CONSTRUCT、ASK和DESCRIBE四种...

    Jena 语义网框架源码

    Jena 是一个强大的开源Java开发工具包,源自惠普实验室的语义网研究项目。它的主要目标是为构建语义网和链接数据应用程序提供一个全面的框架。这个框架使得开发者能够轻松地处理RDF(Resource Description Framework...

    jena-arq2.9

    总结来说,Jena ARQ 2.9是一个强大的语义网开发工具,它为处理RDF数据和执行SPARQL查询提供了全面的支持。无论你是构建Web服务还是开发桌面应用,ARQ都能成为你手中的利器,帮助你挖掘和利用网络中的结构化数据。...

    Jena 开源与以往项目

    总之,Jena是一个强大而灵活的语义网工具,对于那些需要处理和管理大量本体数据的开发者来说,是一个不可或缺的资源。通过熟练掌握Jena API,开发者可以构建出高效、可扩展的语义网应用,并利用MySQL这样的关系...

    jena-3.0.1.zip

    在Jena 3.0.1中,我们可以找到以下几个重要的知识点: 1. **RDF(Resource Description Framework)**:RDF是一种标准模型,用于描述网络资源。Jena 提供了完整的RDF API,可以创建、读取和修改RDF数据。通过RDF,...

    jena安装包

    在这个"apache-jena-2.12.1"安装包中,我们将会探索Jena的核心功能、主要组件以及如何在你的项目中安装和使用它。 Jena是由Apache软件基金会开发的,它提供了一整套工具来处理RDF(Resource Description Framework...

Global site tag (gtag.js) - Google Analytics