チュートリアル

概要

本チュートリアルでは,RDF Primer の中で紹介されているRDF文書をMR3 を用いて作成していく.MR3 を 用いてRDFコンテンツを作成する方法には,RDFSコンテンツを作成した後に(RDFSコンテンツの語彙を用いて)RDFコンテンツを作成する方法 (トップダウン)とRDFコンテンツから作成する方法(ボトムアップ)がある.トップダウンでは,あらかじめRDFSコンテンツをインポートすることで, インポートしたRDFSコンテンツ(語彙)を用いてRDFコンテンツの作成ができる.ボトムアップでは,RDFモデルを作成しながら,RDFモデルの作成 に必要なリソースのタイプやプロパティを抽出し,RDFSクラスやプロパティに反映することができる.本チュートリアルでは,MR3 を用いて,トップダウンとボトムアップの2通りの方法で,以下に示すサンプルRDF文書の作成を行う.

BASE   <http://example.org/>
PREFIX bob: <http://example.org/bob#>
PREFIX alice: <http://example.org/alice#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX schema: <http://schema.org/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX wd: <http://www.wikidata.org/entity/>

bob:me
    a foaf:Person ;
    foaf:knows alice:me ;
    schema:birthDate "1990-07-04"^^xsd:date ;
    foaf:topic_interest wd:Q12418 .

wd:Q12418
    dcterms:title "Mona Lisa" ;
    dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> .

<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>
    dcterms:subject wd:Q12418 .

RDFコンテンツの作成 (トップダウン)

1. RDFコンテンツ作成に利用する接頭辞と名前空間の登録

はじめに,RDFコンテンツ作成に必要な名前空間を名前空間テーブルに登録する.名前空間テーブルを表示するためには,ツールバーの nstable アイコンまたはウィンドウメニューの「名前空間テーブルを表示」を選択する.以下の図は,以下に示す名前空間接頭辞と名前空間の対応関係を名前空間テーブルに登録した状態を示している.名前空間接頭辞 mr3, rdf, rdfs, owl は,初期状態で登録されている.

接頭辞

名前空間

mr3

http://mrcube.org#

rdf

http://www.w3.org/1999/02/22-rdf-syntax-ns#

rdfs

http://www.w3.org/2000/01/rdf-schema#

owl

http://www.w3.org/2002/07/owl#

foaf

http://xmlns.com/foaf/0.1/

schema

http://schema.org/

dcterms

http://purl.org/dc/terms/

wd

http://www.wikidata.org/entity/

bob

http://example.org/bob#

alice

http://example.org/alice#

「接頭辞」テキストフィールドと「名前空間」テキストフィールドにそれぞれ,登録したい接頭辞および名前空間を入力し,「追加」ボタンを押すと接頭辞と対応する名前空間が名前空間テーブルに登録される.名前空間テーブルに登録された接頭辞は,各要素(インスタンス,インスタンスプロパティ,RDFSクラス,RDFSプロパティ)作成する際に用いられる.

_images/top-down-step1.png

2. RDFSクラスの挿入

RDFSクラスの挿入を行う.クラスエディタ内で右クリックをしてポップアップメニューを出す.ポップアップメニュー の中の「クラスの挿入」メニューを選択し,RDFSクラスの挿入を行う.サンプルRDF文書内では,foaf:Personbob:me インスタンスのタイプとなっている.MR3 では,インスタンスのタイプは,RDFSクラスから選択する.RDFSクラスは,クラスエディタ内で定義する.

_images/top-down-step2-1.png

「クラスの挿入」メニューを選択すると,以下のダイアログが表示される.「接頭辞」コンボボックスから名前空間テーブルに登録した接頭辞 foaf を選択し,「ID」テキストフィールドに Person を入力する.「了解」ボタンをクリックするとクラスエディタ内に RDFSクラス foaf:Person が挿入される.

_images/top-down-step2-2.png

3. RDFSプロパティの挿入

RDFSクラスと同様にRDFSプロパティ(foaf:knows, schema:birthDate, foaf:topic_interest, dcterms:title, dcterms:creator, dcterms:subject) も作成する.プロパティエディタ内で右クリックするとポップアップメニューが表示される.「プロパティの挿入」メニューを選択すると以下のダイアログが表示される.「了解」ボタンをクリックするとプロパティエディタ内にRDFSプロパティが挿入される.MR3 では,RDFプロパティは,RDFSプロパティから選択する.RDFSプロパティは,プロパティエディタ内で定義する.

_images/top-down-step3-1.png

RDFSクラス foaf:Person とRDFSプロパティ foaf:knows, schema:birthDate, foaf:topic_interest, dcterms:title, dcterms:creator, dcterms:subject をMR3 で作成すると以下の図のようになる.

_images/top-down-step3-2.png

4. インスタンスの挿入

次に,手順1から3までで,作成したRDFSクラス及びプロパティを用いてRDFコンテンツの作成を行う.まずは, インスタンスを作成する.インスタンスは,インスタンスエディタ内で定義する.インスタンスエディタ内で右クリックするとポップアップメニューが表示される.ポップアップメニュー内の「インスタンスの挿入」メニューを選択し,インスタンスの挿入を行う.

_images/top-down-step4-1.png

「インスタンスの挿入」メニューを選択すると以下のダイアログが表示される.「インスタンスタイプ」コンボボックスからインスタンスのタイプを選択する.インスタンスのタイプは,クラスエディタで作成されたRDFSクラスから選択できる.ここでは,foaf:Person クラスをインスタンスのタイプとして選択する.また,http://example.org/bob#me を「URI」テキストフィールドに入力する.インスタンスのタイプとURIを入力し,「了解」ボタンをクリックするとインスタンスがインスタンスエディタに挿入される.

_images/top-down-step4-2.png

同様に,alice:me, wd:Q12418, http://dbpedia.org/resource/Leonardo_da_Vinci, http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619 インスタンスを挿入する.インスタンスのタイプは空欄を指定する.

5. リテラルの挿入

次に,"1990-07-04"^^xsd:date"Mona Lisa" リテラルを作成する.インスタンスエディタ上で右クリックをして,ポップアップメニューから「リテラルの挿入」メニューを選択すると「リテラルの挿入」ダイアログが表示される.

_images/top-down-step5-1.png

以下の図は,「リテラルの挿入」ダイアログを表している.「リテラル」テキストエリアに文字列を入力し,「了解」ボタンをクリックするとリテラルがインスタンスエディタに挿入される.「データタイプ」チェックボックスにチェックを入れると,リテラルのデータ型が選択できる.ここでは,"1990-07-04" リテラルのデータ型として「http://www.w3.org/2001/XMLSchema#date」(xsd:date)を選択する.

_images/top-down-step5-2.png

6. インスタンスプロパティの挿入

次に,インスタンスプロパティの挿入を行う.インスタンスプロパティを挿入するためには,主語リソースの中心にカーソルを合わせる.カーソルが矢印から十字に変わった状態で, 目的語リソースまたはリテラルの中心に向けてカーソルをドラッグし,同様にカーソルが十字に変わった状態でドロップすることで,インスタンスプロパティが挿入される.作成されるインスタンスプロパティは mr3#nil (MR3 が提供する)となる.インスタンスプロパティを挿入する際に,あらかじめプロパティエディタにおいて,挿入したいプロパティを選択してある場合には,選択されたプロパティがインスタンスプロパティとして挿入される.ここでは,bob:me インスタンスと alice:me インスタンスの間に foaf:knows プロパティ,bob:me インスタンスと "1990-07-04" リテラルの間に shema:birthDate プロパティ, bob:me インスタンスと wd:Q12418 インスタンスの間に foaf:topic_interest プロパティ, wd:Q12418 インスタンスと http://dbpedia.org/resource/Leonardo_da_Vinci インスタンスの間に dcterms:creator プロパティ, wd:Q12418 インスタンスと "Mona Lisa" リテラルの間に dcterms:title プロパティ, http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619 インスタンス と wd:Q12418 インスタンスの間に dcterms:subject プロパティを挿入する.

_images/top-down-step6-1.png

インスタンスプロパティを編集するためには,属性ダイアログを表示する.属性ダイアログを表示するためには,ツールバーの attribute-dialog アイコンをクリックするか,ポップアップメニューから「属性ダイアログを表示」メニューを選択する.RDFプロパティ foaf:knows に変更するためには,「接頭辞」コンボボックスから接頭辞 foaf を選択し,「プロパティID」リストから knows を選択する.「適用」ボタンをクリックすると変更が反映される.

_images/top-down-step6-2.png

7. 作成したRDFコンテンツをTurtle形式でファイルに保存する

ここまでの作業で,以下の図のようなRDFSクラス,RDFSプロパティ,RDFモデルが作成されている.

_images/top-down-step7-1.png

作成したRDFコンテンツが,どのように出力されるかを確認するには,RDFソースコードビューアを表示する.RDFソースコードビューアは,ツールメニューのRDFソースコードビューアを選択するか,ツールバーの rdf_source_code_viewer を選択する.ラジオボタンから構文として,TurtleJSONLDXMLN-Triples の形式が選択できる.ボタンを選択すると,指定した構文でRDFソースコードが表示される.

_images/top-down-step7-2.png

作成したRDFコンテンツをファイルに出力したい場合には,ファイルメニューの「名前を付けて保存」ボタンを選択する.「保存」ダイアログが表示されるため,保存したいフォルダを選択し,「ファイルのタイプ」からエクスポートしたいRDFの形式を選択し,「保存」ボタンを押すと,RDFコンテンツが指定した形式でファイルに保存される.ここでは,「Turtle(*.ttl)」を選択してTurtle形式でファイルを保存する.

_images/top-down-step7-3.png

RDFコンテンツの作成 (ボトムアップ)

1. RDFコンテンツ作成に利用する接頭辞と名前空間の登録

トップダウン手法の手順1と同様にRDFコンテンツ作成に利用する接頭辞と名前空間を登録する.

2. RDFリソースの挿入

トップダウン手法の手順4と同様の手順でRDFリソースを挿入する.

トップダウン手法との違いは,この時点では, bob:me インスタンスのタイプがクラスエディタで定義されていない点である.ボトムアップの手法では,RDFリソースを編集中にRDFSクラスを作成する.

属性ダイアログを表示し,インスタンス bob:me を選択する.インスタンスの属性が属性ダイアログに表示される.左側に表示されるリストの中から「タイプ」を選択する.「接頭辞」コンボボックスから foaf を選択し,タイプIDとして Person を入力する.RDFSクラスに指定したいクラスが定義されている場合には,「タイプ選択」ボタンをクリックすれば,クラスエディタからクラスを選択することができる.今回は,ボトムアップにRDFコンテンツ作成しているため,RDFSクラスに foaf:Person クラスが作成されておらず,選択することができない.指定したいインスタンスのタイプ foaf:Person を入力した状態で,「適用」ボタンをクリックする.「クラスが定義されていません.クラスを作成しますか?」と尋ねるダイアログが表示されるため,「はい」ボタンをクリックする.

_images/bottom-up-step2-1.png

以下の図のように,クラスエディタに foaf:Person クラスが作成される.

_images/bottom-up-step2-2.png

3. リテラルの挿入

トップダウンの手順5と同様にリテラルを挿入する.

4. インスタンスプロパティの挿入

トップダウン手法の手順6と同様にインスタンスプロパティを挿入する.

トップダウン手法との違いは,この時点では,RDFSプロパティがプロパティエディタに定義されていない点である.ボトムアップの手法では,インスタンスを編集中にRDFSプロパティを作成していく.ここでは, bob:mealice:me の間に foaf:knows プロパティを作成する例を説明する.

属性ダイアログを表示し, bob:mealice:me の間に張られたインスタンスプロパティを選択する.「接頭辞」コンボボックスから foaf を選択する.「プロパティID」リストには,RDFSプロパティで定義されているプロパティのID一覧が表示されるが,今回は定義されていないため表示されない.「ID」テキストフィールドに knows と入力し,「適用」ボタンをクリックする.「プロパティが定義されていません.プロパティを作成しますか?」と尋ねるダイアログが表示されるため,「はい」ボタンをクリックする.

_images/bottom-up-step4-1.png

以下の図のように,プロパティエディタに foaf:knows プロパティが作成される.

_images/bottom-up-step4-2.png

同様に,schema:birthDate , foaf:topic_interest , dcterms:title , dcterms:creator , dcterms:subject プロパティも作成する.

5. 作成したRDFコンテンツをTurtle形式でファイルに保存する

トップダウン手法の手順7と同様に,Turtle形式でRDF文書をファイルに保存する.