セマンティックエディタ入門

2008-06-02
桐畑 輝樹 (豊橋技科大)・橋田 浩一 (産総研)

導入

準備

セマンティックエディタは産総研サービス工学研究センターで開発中のJavaアプリケーションです。 JRE5以降のJRE (Java Runtime Environment; J2SEに含まれます) が必要です。 JRE6以降を推奨します。 下記のJWS版を使うと、 適当な版のJREがなければ自動的にダウンロード・インストールされます。 Mac OS X用のJavaはここにあります。

セマンティックエディタを使うにはユーザ名パスワードが必要です。 これらを取得するには橋田までご連絡下さい。

インストール

ダウンロードページ (上記とは別のユーザ名とパスワードによる認証が必要です) の DB/saEditor → Editor → Stable versionから、 下記のいずれかをダウンロードして下さい (JWS版をお薦めします)。

起動

メインメニュー → 通信 → 通信ステータス をチェックすると通信ステータスウィンドウが現われ、 ここに通信の内容が表示されます。通信の失敗は赤字で表示されます。

JRE5でJavaコンソールを表示した状態でJWS版を使っている場合など、 セマンティックエディタの終了の際にローカルキャッシュが壊れて 次の起動ができなくなることがあるかも知れません。 そのような場合は、ローカルキャッシュ (Windowsの場合は C:\Documents and Settings\ユーザ名\.sa\cache) を消去して下さい。

終了

メインメニュー → ファイル → 閉じるAlt-F4、 またはCtrl-Qで終了して下さい。

アンインストール

プラグイン

ダウンロードページ でサンプルプラグイン (Serialize、Search、Duplicate、Graph Searchなど) が公開されています。 「Install」リンクをクリックして実行するとインストールできます。 セマンティックエディタが動作中でもインストール可能です。

プラグインはjnlp形式またはjar形式で配布されます。 どちらの場合も当該のファイルを実行することによってプラグインをインストールできます。

インストールしたプラグインは、ユーザディレクトリの直下の .sa/plug-inディレクトリに置かれます。 不要になったら削除して下さい。 Windowsの場合、上記の方法でインストールしたプラグインについては、 コントロールパネル → アプリケーションの追加と削除からアンインストールして下さい。

操作

概要と例

セマンティックエディタはRDF (Resource Description Format) のグラフを共同作成するためのソフトウェアツールです。 グラフはノードとリンクからなり、 ノードはハイパーノード (グラフを中に含むノード) でも構いません。 画面のトップレベルもハイパーノードです。その他のハイパーノードの 内容であるグラフは各々サブウィンドウの中に表示されます。

セマンティックエディタの画面には「グラフモード」と「ツリーモード」と いう2通りの表示のモードがあります。 トップレベルのウィンドウは通常はグラフモードになっていますが、 サブウィンドウは通常はツリーモードになっています。 ウィンドウの背景を右クリックすると現われるコンテキストメニューから 「ツリーモードに変更」または「グラフモードに変更」を選択すると ツリーモードまたはグラフモードに変更することができます。

ツリーモードへの変更
ツリーモードへの変更

グラフモードでは、グラフに含まれる各ノード、各リンクがちょうど 1回ずつ出現するようにグラフを単純に表示します。 ツリーモードではグラフを木のように表示しますが、各ノード、 各リンクは複数回出現しても良いので、木の形で任意のグラフを 表示できます。 ツリーモードではウィンドウの左端に縦長の長方形が現われます。 この長方形は当該のハイパーノード自体を表わします。

ツリー表示
ツリー表示

ツリーモードでは、カーソルの位置に応じて黄色い破線 (上の図ではノードFの右側の破線) が表示されますが、 これは、ドラッグ&ドロップ による実体の移動や新たな実体の作成によって実体が挿入される位置を示しています。

上の図の状態でCtrl-T を実行すると、 現在フォーカスされたウィンドウの中にノードの一種である テキストノードがノードFの右側に新たに作られます。 テキストノードができると、 その内容としてテキストを入力できる状態になっています。

新ノードの作成
新たなテキストノードの作成

ここで背景をクリックするなどしてテキストを入力せず空にすると、 ノードのタイプであるクラス (この場合には rdfs:Resource) のラベル (この場合には Resource)が表示されます。

空ノード
空ノード

実体 (ノードまたはリンク) の左肩の赤い星印は、その実体 の最新の情報がサーバに送信されていないことを示します。 「同期」を実行するとその情報がサーバに送信され、星印が消えます。

サーバとの同期の後
サーバとの同期の後

実体のタイプ (ノードの場合はクラス、リンクの場合は属性) を変更するには、その実体を右クリックして現われる コンテキストメニューから適当なタイプを選択します。

タイプメニュー
タイプメニューからの選択

ノードをダブルクリックすると、 そのノードに対応するサブウィンドウが開きます。 たとえば上図の例で`Resource'ノードを ダブルクリックすると、 下のようになります。

サブウィンドウ
サブウィンドウ

このサブウィンドウの中にノードを作ると、 `Resource'ノードの枠線が2重になりますが、 これはこのノードが非空のハイパーノードになったことを表わします。

ハイパーノード
ハイパーノード

さらにノード`B'をこのハイパーノードの中に ドラッグ&ドロップすると、 サブウィンドウの背景が緑色になりますが、これは`C'ノード を根とする部分木が`Resource'ノード自身も含めて `Resource'ノードの要素となり、`Resource'ノードがトップレベルの ハイパーノードの要素でなくなくなったため、 このサブウィンドウの内容が現在のプロジェクトの外にあることを 示します。

プロジェクトの外のハイパーノード
プロジェクトの外のハイパーノード

ツリーモードでは各実体を Ctrl+ドラッグ&ドロップ することによってその実体の新しい出現を作ることができます。 また、リンクの端 (3角か丸の部分) を背景に ドラッグ&ドロップすると、 ドロップ先にその端につながったノードの新しい出現ができます。 たとえば、下のように「例」リンクの右端をノード`A'の右側に ドラッグ&ドロップすると、

リンクの端のドラッグ
リンクの端のドラッグ
ノード`G'の新しい出現がノード`A'の右側にできます。
ノード`G'の新しい出現の作成
ノード`G'の新しい出現の作成

ひとつの実体のある出現を別の出現に ドラッグ&ドロップ すると、2つの出現を後者に統合できます。

ノードの複数の出現の統合
ノード`G'の複数の出現の統合

終点がrdfs:Literalタイプまたはxsd:Datatypeタイプである属性 (データ型属性) のインスタンスと終点は始点であるノードの内部に埋め込まれます。 それらを閲覧・編集するには、 ノードに関して「データ型属性の編集」 (Ctrl-G) を実行します。

データ型属性の編集
データ型属性の編集

メニュー

以下のようなメニューを見れば操作の仕方は大体わかると思います。 たいていのコマンドにキーボードショートカットを定義してあるので活用して下さい。

メインメニュー → ファイル
メインメニュー → ファイル
メインメニュー → 編集
メインメニュー → 編集

「操作」メニューにはクリックやドラッグによる操作が括弧内に示されている項目があります。 たとえば、ノード内のテキストの「編集」は、 ノードを Ctrl-ダブルクリック するか、 ノードを選択した状態で Ctrl-E としても実行できます。

メインメニュー → 操作
メインメニュー → 操作
メインメニュー → 通信
メインメニュー → 通信
メインメニュー → オントロジー
メインメニュー → オントロジー

背景を右クリックすると(サブ)ウィンドウのコンテキストメニューが現われます。

コンテキストメニュー → 新規作成
ウィンドウのコンテキストメニュー → 新規作成
コンテキストメニュー → 通信
ウィンドウのコンテキストメニュー → 通信
ツールバー
ツールバー

この他に、ノードを右クリックして現われるコンテキストメニューからも さまざまなコマンドが実行できます。 リンクのコンテキストメニューからは属性を選択できます。

コンテンツ

  • 実体
  • ノードとリンクの総称。

    • ノード
    • テキストノード、メディアノード、またはオントロジーノード。 これらはハイパーノードとなって要素を持つことができる。 要素を持つノードの縁は2重線で表示される。

      • テキストノード
      • テキストを内容として持つノード (テキストが空ならクラスのラベルが表示される)

      • メディアノード
      • メディア(任意のファイル)を内容として持つノード

      • オントロジーノード
      • クラス(ノードのタイプ)または属性(リンクのタイプ)を表わすノード

    • リンク
    • 実体の間の関係を表す実体。

  • プロジェクトファイル
  • ハイパーノードを指し、それを表示するウィンドウのサイズや それに含まれるサブウィンドウ等の情報を含むファイル

  • プロジェクト
  • プロジェクトファイルによって指されたハイパーノードと その子孫の実体からなるコンテンツ。

表示モード

セマンティックエディタには下記の2つの表示モードがあります。
  • ツリー表示
  • グラフを木の形にレイアウトするモード。 ノードに対応するウィンドウを最初に開いたときはこのツリー表示モードになっている。
  • グラフ表示
  • グラフを普通にレイアウトするモード。 新しいプロジェクトを最初に開いたときはこのグラフ表示モードになっている。

実体の選択

  • 単一選択
    • クリック
  • 複数選択
    • Ctrl-クリック または Shift-クリック (選択のトグル)
    • Shift-ドラッグ (範囲の選択)
  • フォーカスされているノードの要素の全選択
    • ショートカットキーCtrl-A
    • メインメニュー → 編集 → 全てを選択

ノードの展開

ハイパーノードの内容であるグラフを表示するサブウィンドウを開きます。

  • ノードをダブルクリック
  • ノードを選択して Enter
  • ノードを選択して メインメニュー → 操作 → ウィンドウを開く
  • ノードを選択して メインメニュー → 操作 → 親のウィンドウを閉じて開く

ウィンドウのスクロール

(サブ)ウィンドウをスクロールします。

  • ウィンドウの背景をドラッグ
  • ウィンドウの中の任意の個所 (実体でも可) をAlt-ドラッグ

ノードの作成

  • ショートカットキー
    • テキストノード: Ctrl-T
    • オントロジーノード: Ctrl-N
    • メディアノード: Ctrl-B (外部ファイルを含む任意の実体をインポートすることによって作る)
  • メインメニュー → 操作 → 新規作成 → 各種ノード作成
  • ツールバー → 各種ノード作成
  • 背景を右クリック → コンテキストメニュー → 新規作成 → 各種ノード作成

実体のインポート

実体のURIを以下のいずれかの操作で入力すると、 その実体をインポートできます。

  • ショートカットキーCtrl-B
  • メインメニュー → 操作 → 新規作成 → インポート
  • ツールバー → インポート
  • 背景を右クリック → コンテキストメニュー → 操作 → 新規作成 → インポート
ここで入力できるURIは、セマンティックエディタで作られた実体のURI (ee8a55ce-d517-4d3f-9b61-33b325bb4274のようなもの) または外部の実体のURI (http://i-content.org/index.htmlのようなもの)です。

リンクの作成

実体同士(通常はノード同士)を結び付けます。

  • 既存の実体を1つ以上選択した状態で、 それらの1つを他の実体にShift-ドラッグすると、 選択されていた実体を始点とし後者の実体を終点とするリンクができる。
  • 既存の実体を2つ選択した状態で、最初に選択した実体を始点、 次に選択した実体を終点(目的語)とするリンクを作る。
    • ショートカットキーCtrl-M
    • メインメニュー → 操作 → 新規作成 → リンク作成
    • ツールバー → リンク作成
    • 背景を右クリック → コンテキストメニュー → 新規作成 → リンク作成
    • いずれかの実体 (ノードでなければならない) を右クリック → リンク作成
  • 既存の実体を始点(主語)とするリンクとその終点(目的語)を作る。
    • 実体を1つだけ選択した状態でショートカットキーCtrl-M
    • 実体を1つだけ選択した状態で メインメニュー → 操作 → 新規作成 → リンク&ノード作成
    • 実体を1つだけ選択した状態で ツールバー → リンク&ノード作成
    • 実体を1つだけ選択した状態で背景を右クリック → コンテキストメニュー → 新規作成 → リンク&ノード作成
    • 始点となる実体を右クリック → リンク&ノード作成
  • 既存のノードを1つだけ選択した状態で、 そのノードに必須のリンクとその終点を作る。
    • ショートカットキーCtrl-L
    • メインメニュー → 操作 → 必須リンク作成

テキストの編集

ノードの内容のテキストを編集します。 オントロジーノードの内容(URI)も編集できます。

  • ノードを1つだけ選択した状態で ショートカットキーCtrl-E
  • ノードの内部を長く左クリック
  • ノードを右クリック → コンテキストメニュー → 編集
  • ノードを1つだけ選択した状態で メインメニュー → 操作 → 編集
  • ノードを1つだけ選択した状態で ツールバー → 編集

実体の移動とコピー

実体の位置を変更します。

(グラフ表示モードのハイパーノードとツリー表示モードのハイパーノード との間での実体のドラッグ&ドロップ はできません。)
  • グラフ表示モードでは、↑↓←→キーを押下すると、選択状態にある全ノードが10ピクセルずつ移動します。
    • Altと同時に押下すると1ピクセルずつ移動します
  • ツリー表示モードでは、↑↓←→キーを押下すると、選択状態にある各ノードを根とする部分木すべてが木構造の中を移動します。

リンクの端点の変更

リンクの先端(3角形の部分)または末尾(丸い部分)を他の実体にドラッグ&ドロップするとリンクの端点が付け換わります。

ツリー表示モードでリンクのいずれかの端を実体がないところに ドラッグ&ドロップすると、 その端が付いていた実体の新たな出現がそこにできて、ドラッグした端が その出現に付きます。

実体のタイプの設定

ノードがどのクラスのインスタンスか、 リンクがどの属性のインスタンスかを設定します。 クラスと属性は、システムオントロジーまたはプロジェクトオントロジー で定義されたものから選べます。

  • 選択されているすべてのノードのクラスの設定
  • いずれかのノードを右クリック コンテキストメニュー → クラス → 各クラス選択

  • 選択されているすべてのリンクの属性の設定
  • いずれかのリンクを右クリック コンテキストメニュー → 各属性選択

ノードの種別の変更

ノードには、 単文(テキスト)/メディア/オントロジーという3つの種別があります。

  • ノードを右クリック → コンテキストメニュー → ノード種別変更 → 各種別選択

サーバとの通信

サーバと通信することによって他の利用者とコンテンツを共有することができます。 サーバとの通信には主に(再帰的)同期を使って下さい。

  • 同期
  • フォーカスされたノードとその要素の実体について、 前回の通信より後の変更をサーバに送信し、 またサーバでの変化を取得します。

  • 再帰的同期
  • フォーカスされたノードとその子孫の実体について、 前回の通信より後の変更をサーバに送信し、 またサーバでの変化を取得します。

通信によって実体の枠線の色が変化することがあります。 各色の意味は下記の通りです。

  • 深緑
  • 最近の通信によって新たに出現した。

  • サーバでの変更 (子孫に関する変更を含む) が取得された。

  • ピンク
  • ノードの子孫に関するサーバでの変更に未取得のものがある。

オントロジー

セマンティックエディタが初期状態で使用できるオントロジーは、 システムオントロジーに含まれる下記のものです。

  • RDF/RDFS/OWL
  • xsd (Datatypes in XML Schema Definition)
  • sa (ontology for semantic authoring)
  • rel (middle-grain linguistic relations)
他のオントロジーは必要に応じてプロジェクトオントロジーに入れて下さい。 オントロジーに違反している実体のラベルは赤くなります。

言語的関係のオントロジー (rel (middle-grain linguistic relations) は文間の関係 (談話関係) 等の意味的な関係を定義しています。 通常の文章に相当するコンテンツはこれらの関係を使って作ります。

オントロジーの例題

ここでは「サザエさん」の家系図を作ってみましょう。 以下に図で示すコンテンツはすべてグラフ表示モードになっていますが、 ツリー表示モードでも実質的に同じことができます。

家族関係を記述するためには、 そのためのオントロジーをプロジェクトオントロジーにインポートしてオントロジーを反映する必要があります。 ここでは、予め用意されているオントロジー fam: family relation ontologyに基づいてグラフを作ります。

メインメニューからシステムオントロジを開きます。

「メインメニュー → オントロジ → システムオントロジ」選択
「メインメニュー → オントロジ → システムオントロジ」選択

縁が点線になっているノードは実はこのハイパーノードの要素ではなく、 「ダミーノード」と呼ばれます。 また、ノードの縁がピンクになっているのは、 その最新の内容が未取得であることを表わします。

システムオントロジーの内容
システムオントロジーの内容

同じくプロジェクトオントロジーを開きます。

「メインメニュー → オントロジ → プロジェクトオントロジ」選択
「メインメニュー → オントロジ → プロジェクトオントロジ」選択
プロジェクトオントロジーのウィンドウ
プロジェクトオントロジーのウィンドウ

システムオントロジーの中の ontologies ノードをダブルクリックしてこのノードを展開します。 背景が緑色になっているのは、 このノードが現在作業中のプロジェクトに含まれていないということです。

ontologyノードの内容
ontologies ノードの内容

ontologyの中にはいろいろなオントロジーが含まれています。 今回は家族関係を記述するので、これらの中から fam: family relation ontology をプロジェクトオントロジーに コピー&ペーストします。

projectOntologyにコピー&ペースト
projectOntologyにコピー&ペースト

ドラッグ&ドロップでプロジェクトオン トロジに移動(カット&ペースト)すると、 ontologyノードからfam: family relation ontologyが削除されてしまうので注意して下さい。

カット&ペーストしてしまった場合は、 元に戻す (Ctrl-Z)またはバージョンを戻す (Shift-↓)を実行して下さい。

fam: family relation ontology を開いてこのオントロジーの中味をダウンロードして下さい。

fam: family relation ontology の中味をダウンロードする
fam: family relation ontology の内容を取得する

ダウンロードが終わったらオントロジを反映を実行します。

「メインメニュー → オントロジ →
   オントロジを反映」を選択
「メインメニュー → オントロジ → オントロジを反映」を選択

オントロジを反映しないと、 後述のクラスの変更などができません。

以下のようなことを表わすグラフを作成しましょう。

fam: family relation ontologyでは、以下のクラスと属性(プロパティ)が定義されています。

まず、サザエを妻、フグ田マスオを夫とする夫婦を作成します (このノードを便宜上「フグ田夫妻」と呼びます)。 その空ノードのクラスをfam:MaritalCoupleに変更します。

ここでは夫婦を空ノードにしていますが、 他の種別にすると次のようなことができます。

  • テキストノードにしてフグ田夫妻などと名前を付ける。
  • メディアノードにして家族の写真などを貼り付ける。
空ノード生成&選択(フグ田夫妻)
空ノード生成&選択(フグ田夫妻)
「コンテキストメニュー → クラス → 家族 → 夫婦(fam:MaritalCouple)」選択
「コンテキストメニュー → クラス → 家族 → 夫婦(fam:MaritalCouple)」選択

このようにリンクの終点でないノードのタイプとしてあるクラスを使うには、 そのクラスの「出現」属性の値が`Free'でなければなりません。

「出現」属性の値`Free'
「出現」属性の値`Free'

次に、この夫婦ノードを他のノードと関連付けます。

夫婦は必ず夫と妻を含みます。 fam: family relation ontologyではこのことが定義されているので、 必須リンク作成で夫と妻に相当するノードおよびそれらと夫婦ノードとの関係が簡単に作れます。

「メインメニュー → 操作 → 必須リンク作成」選択
「メインメニュー → 操作 → 必須リンク作成」選択
必須リンク作成結果
必須リンク作成結果

生成された「妻」ノードのテキストをサザエにします。 「妻」ノードを長クリックしてテキストカーソルを作り、 テキストを入力して下さい。

テキスト入力結果(サザエ)
テキスト入力の結果(サザエ)

同様に、空ノードをテキストノードフグ田マスオに変更します。

夫ノードのテキスト入力
夫ノードのテキスト入力

以上でフグ田夫妻ができました。

この夫婦の間には、子供(タラオ)がいます。 フグ田夫妻ノードのコンテキストメニューから リンク&ノード作成を選択すると、 フグ田夫妻を始とするリンクとその終点のノードが生成されます。

図のようにノードがリンクで結ばれていない場合は、 ノードとリンクをそれぞれ手動でノードを、 リンクをにして下さい。

夫婦空ノード選択
夫婦空ノード選択
「コンテキストメニュー → リンク&ノード作成」選択
「コンテキストメニュー → リンク&ノード作成」選択
リンク&ノード作成結果
リンク&ノード作成結果

また、タラオはなので、ノードのクラスをからに変更し、さらにテキストノードに変更して名前を入力します。

「コンテキストメニュー → クラス → 男(fam:Male)」選択
「コンテキストメニュー → クラス → 男(fam:Male)」選択
クラス変更(人から男)
クラス変更(人から男)
テキスト入力結果(タラオ)
テキスト入力結果(タラオ)

同様にして磯野家のグラフを作成します。

磯野夫妻作成
磯野夫妻作成

磯野夫妻サザエの間の親子関係を表現するため、前者から後者へのリンクを作ります。 たとえば、CtrlキーまたはShiftキーを押した状態で磯野夫妻サザエの順にノードを選択しておいてCtrl-Mでリンクを作り、そのタイプを「子」に設定します。

リンク作成結果
リンク作成結果

これで所期のグラフがきました。 さらに、普通の家系図風に配置を変更することもできます。

配置変更結果
家系図風の配置

この内容を後で使いたい場合は、 ファイル → 名前を付けて保存を実行してプロジェクトファイルを作ります。