10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ARQをMacにインストールして,さくっとSPARQLでRDFを検索しよう。

Last updated at Posted at 2014-09-25

##はじめに
ARQはJena(Apacheのプロジェクト)で,サポートされているパッケージの1つです。
ARQを使うことで,コマンドプロンプトでSPARQLを実行し,簡易的にRDFを検索することが出来ます。今回はARQをMacにインストールする方法と簡単な使い方をご紹介します。

⚠バージョンによって,インストール方法が変わる恐れがあります。ネット上の情報も古い場合があるので,念のため,解凍したフォルダのREADMEをご覧ください。Windowsの場合のインストール方法もREADMEに載っています(動作は未確認)。

##ダウンロード
最新版のapache-jenaを任意の場所にダウンロードし,解凍します。

$ wget http://www.apache.org/dist/jena/binaries/apache-jena-2.12.1.tar.gz
$ tar -xzvf apache-jena-2.12.1.tar.gz

(Macでwgetコマンドを使えるようにするの書

##PATHを通す

.bash_profileにPATHを設定し,有効化します。

$ vim ~/.bash_profile

#色々な記述があったり無かったり
 export JENA_HOME=インストールした場所/apache-jena-2.10.1
#色々な記述があったり無かったり

$ source ~/.bash_profile

##レッツ実行

$ arq --version
Jena:       VERSION: 2.10.1
Jena:       BUILD_DATE: 2013-05-11T22:05:51+0100
ARQ:        VERSION: 2.10.1
ARQ:        BUILD_DATE: 2013-05-11T22:05:51+0100
RIOT:       VERSION: 2.10.1
RIOT:       BUILD_DATE: 2013-05-11T22:05:51+0100

上記のようにバージョンが表示されればOKです。

 Exception in thread "main" java.lang.NoClassDefFoundError:

のようなエラーが出た場合には,PATHの指定が間違っているのでご注意ください。

###サンプルクエリ
ちなみに実行形式や実行結果は以下のとおりです。

$ arq --data ex002.ttl --query ex003.rq 
--------------------------------
| craigEmail                   |
================================
| "c.ellis@usairwaysgroup.com" |
| "craigellis@yahoo.com"       |
--------------------------------

ちなみに中身は,Learning SPARQLのサンプルデータです。こちらからダウンロード出来ます。
ex002.ttlはTurtle形式のRDF,ex003.rqにSPARQLのクエリが書かれています。

$ cat ex002.ttl 
# filename: ex002.ttl

@prefix ab: <http://learningsparql.com/ns/addressbook#> .

ab:richard ab:homeTel "(229) 276-5135" . 
ab:richard ab:email   "richard49@hotmail.com" . 

ab:cindy ab:homeTel "(245) 646-5488" . 
ab:cindy ab:email   "cindym@gmail.com" . 

ab:craig ab:homeTel "(194) 966-1505" . 
ab:craig ab:email   "craigellis@yahoo.com" . 
ab:craig ab:email   "c.ellis@usairwaysgroup.com" . 

$ cat ex003.rq 
# filename: ex003.rq

PREFIX ab: <http://learningsparql.com/ns/addressbook#> 

SELECT ?craigEmail
WHERE
{ ab:craig ab:email ?craigEmail . }

###間違いの検出にも
ARQの便利なところは,RDFの間違いについても検出してくれるところです(超重要)。例えば,以下のように,ab:craigとするべきところを,a:craigとしてしまうと,

$ cat ex002.ttl 
# filename: ex002.ttl

@prefix ab: <http://learningsparql.com/ns/addressbook#> .

ab:richard ab:homeTel "(229) 276-5135" . 
ab:richard ab:email   "richard49@hotmail.com" . 

ab:cindy ab:homeTel "(245) 646-5488" . 
ab:cindy ab:email   "cindym@gmail.com" . 

ab:craig ab:homeTel "(194) 966-1505" . 
a:craig ab:email   "craigellis@yahoo.com" . 
a:craig ab:email   "c.ellis@usairwaysgroup.com" . 
$ arq --data ex002.ttl --query ex003.rq 
11:54:56 ERROR riot                 :: [line: 12, col: 1 ] Undefined prefix: a
org.apache.jena.riot.RiotException: [line: 12, col: 1 ] Undefined prefix: a
	at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:132)
	at 
…以下略

上記のようにどこが間違っているのか教えてくれます。

###Resultsオプション
地味に便利なresultsオプションを使うと,異なるフォーマットでの出力も可能です。下記の例では,実行結果をJSONで出力させています。他にも,text, XML, CSV, TSV 形式での出力が可能です。

$ arq --data ex002.ttl --query ex003.rq --results json
{
  "head": {
    "vars": [ "craigEmail" ]
  } ,
  "results": {
    "bindings": [
      {
        "craigEmail": { "type": "literal" , "value": "c.ellis@usairwaysgroup.com" }
      } ,
      {
        "craigEmail": { "type": "literal" , "value": "craigellis@yahoo.com" }
      }
    ]
  }
}

ではでは,レッツ エンジョイ スパークルライフ!!しゅわしゅわっ。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?