LoginSignup
6
6

More than 5 years have passed since last update.

Apache Jena ARQ で CSV2RDF その1

Posted at

はじめに

Apache Jena ARQ は SPARQL プロセッサですが、 Turtle や RDF/XML などのファイルだけでなく CSV を読み込む機能がついています。この機能を使って CSV を RDF に変換する方法を紹介します。

準備

  • Apache Jena ARQ をインストールしておく

手順

1)以下の mapping.rq ファイルを作成、 UTF-8 で保存する

mapping.rq
BASE <https://gist.githubusercontent.com/frogcat/a8fdbf19a55c2f717d30/raw/3cc12c692f3ee8e17a4743b97802ee17747128fc/20150728.csv>
PREFIX  :       <#>
PREFIX  xsd:    <http://www.w3.org/2001/XMLSchema#>
PREFIX  schema: <http://schema.org/>

CONSTRUCT {
    ?subject
        a   schema:Place ;
        schema:name ?name_ja ;
        schema:geo  [
            schema:longitude    ?lng ;
            schema:latitude     ?lat
        ] 
}
FROM <>
WHERE {
    ?s  :名称 ?name ; :X ?lng ; :Y ?lat ; :施設ID ?id
    BIND (STRLANG(?name,"ja") as ?name_ja)
    BIND (IRI(CONCAT("http://example.org/",STR(?id))) as ?subject)
} 

2)つぎのコマンドを実行する

$ arq --query mapping.rq > result.ttl

3)result.ttl に変換結果が保存される

result.ttl
@prefix :      <https://gist.githubusercontent.com/frogcat/a8fdbf19a55c2f717d30/raw/3cc12c692f3ee8e17a4743b97802ee17747128fc/20150728.csv#> .
@prefix schema: <http://schema.org/> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

<http://example.org/30204>
        a            schema:Place ;
        schema:geo   [ schema:latitude   "34.6348221388889"^^xsd:double ;
                       schema:longitude  "135.50539225"^^xsd:double
                     ] ;
        schema:name  "松虫中学校"@ja .

<http://example.org/30198>
        a            schema:Place ;
        schema:geo   [ schema:latitude   "34.6322356666667"^^xsd:double ;
                       schema:longitude  "135.512972861111"^^xsd:double
                     ] ;
        schema:name  "阿倍野小学校"@ja .

(以下省略)

解説

CSV から RDF へのマッピング

Apache Jena ARQ は独自の CSV-RDF マッピングルール を用意しており、入力として指定された URL が CSV っぽいときには CSV を RDF に変換して読み込んでくれます。

SPARQL CONSTRUCT

SPARQL Endpoint に SELECT を投げる使い方が一般的ですが、既存のデータを適切な RDF に整形する目的であれば SPARQL CONSTRUCT はとても便利です。IBM Developer Works 既存のデータをセマンティック Web で利用する などをご覧ください。

課題

  • CSV-RDF マッピングは ARQ の独自仕様 ※
  • ARQ では UTF-8 以外の CSV を読むことができない > 日本で主流の Shift_JIS CSV をどうする?
  • CSV の一行目が項目ラベルとして使われる、というルールを守れるかどうか?

W3C : Generating RDF from Tabular Data on the Web として標準化が進められているので、将来的には各種の SPARQL プロセッサに同様の機能が実装されるかもしれません。なお ARQ の CSV-RDF マッピングルールは ARQ の独自仕様ですが、 minimal mode とだいたい同じなので、この点はあまり心配しなくてもいいかもしれません。

(その2につづくかも)

6
6
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
6
6