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
相關文章
- MapReduce環境搭建以及WordCount案例
- 分享幾款一鍵搭建php本地測試環境工具PHP
- Mac OS搭建Python開發環境的幾個誤區MacPython開發環境
- Mybatis環境搭建以及案例 SqlSession物件的方法MyBatisSQLSession物件
- WebDriver環境搭建使用Web
- 【Kafka】基於Windows環境的Kafka有關環境(scala+zookeeper+kafka+視覺化工具)搭建、以及使用.NET環境開發的案例程式碼與演示KafkaWindows視覺化
- Java環境搭建與配置、以及Tomcat搭建與配置JavaTomcat
- PCIE XDMA 開發環境搭建以及環路測試開發環境
- 使用docker搭建laravel環境DockerLaravel
- AndroidStudio之NDK環境搭建,so檔案打包以及使用Android
- androidNDK環境的搭建和使用Android
- PHP環境搭建以及完成本地執行PHP
- Linux筆記01:概述以及環境搭建Linux筆記
- 搭建lamp環境以及安裝配置phpmyadminLAMPPHP
- mac下hadoop環境的搭建以及碰到的坑點MacHadoop
- 快速搭建一個Fabric 1.0的環境
- 簡單幾步搭建一個基於Docker的Tomcat執行環境!DockerTomcat
- Windows環境下的Nginx環境搭建WindowsNginx
- 使用docker快速搭建hive環境DockerHive
- 使用 Docker 搭建 Laravel 本地環境DockerLaravel
- 使用docker搭建tomcat環境DockerTomcat
- 使用docker搭建gitlab環境DockerGitlab
- Android systrace環境的搭建和使用Android
- 如何使用docker搭建一個全家桶開發環境Docker開發環境
- Linux 下 Go 環境搭建以及 Gin 安裝LinuxGo
- Flutter環境搭建以及開發軟體安裝Flutter
- Mac 下 vue 開發環境的搭建以及專案建立MacVue開發環境
- 環境搭建
- Laravel 環境的搭建Laravel
- Java的環境搭建Java
- vue的環境搭建Vue
- 教你搭建一個好看的 Jupyter 環境
- CentOS 7 使用 docker 搭建基本的 lnmp 環境CentOSDockerLNMP
- Mac下git的環境搭建和基本使用MacGit
- 使用virtualenv搭建獨立的Python環境Python
- 從環境搭建到打包使用TypeScriptTypeScript
- 使用 VSCode 搭建 Flutter環境VSCodeFlutter
- Vue環境搭建(使用完整框架)Vue框架