Skip to main content

Jython & Clojure

Jython

OpenRefine 3.4.1 以降の標準インストールには Jython 2.7.2 が同梱されています。このチュートリアル に従えばライブラリやコードを追加できます。多くの Python ファイル(.py, .pyc)に対応しています。

C 言語のバインディングに依存する Python コードは、Java / Jython 環境の OpenRefine では動作しません。Jython は実質的に Java なので、Java ライブラリをインポートして利用することもできます。

新たな Jython/Python ライブラリを使うには OpenRefine を再起動し、起動時に初期化されるようにしてください。

現在 OpenRefine には HTML/XML を扱うための Jsoup.org ライブラリの大部分 が GREL 関数として組み込まれています。

Syntax

Jython 式では return 文を使う必要があります:

  return value[1:-1]
  return rowIndex % 2

フィールドにはドット記法ではなく角括弧でアクセスします:

  return cells["col1"]["value"]

たとえば リコンシリエーション変数 を使って一致距離(edit distance)を取得するには:

  return cell["recon"]["features"]["nameLevenshtein"]

value が null でなければ小文字化して返す例:

  if value is not None:
return value.lower()
else:
return None

Tutorials

Jython 言語の詳細は公式サイト http://www.jython.org をご覧ください。

Clojure

OpenRefine 3.4.1 の標準インストールには Clojure 1.10.1 が同梱されています。現時点で variables のうち Jython で利用できるのは value, row, rowIndex, cell, cells です。

たとえば次のような形式が使えます:

(.. value (toUpperCase) )

または:

(-> value (str/split #" ") last )

これは GREL の value.split(" ") と同等の動作です。

構文に関するヘルプは Clojure 公式の構文ガイド を参照してください。

Clojure のユーザー提供レシピは https://github.com/OpenRefine/OpenRefine/wiki/Recipes#11-clojure にまとめられています。

Clojure 言語のドキュメントは公式サイト https://clojure.org/ にあります。