Semantic MediaWikiとSMW+のセットアップ

背景

OWL/RDFファイルを参照し、その内容を反映したサイトを自動構築するのに相応しい環境を検討した。
つまり、効率的に「セマンティックコンテンツ管理システム」を実現したい時に適切な環境を知りたかった。
この環境では、統一感があり、ページ間の繋がりが有機的なサイト構成を例えば Protege を利用して検討しOWLファイルとして生成すれば、それを反映したサイトがたちどころに出来上がることになる。
その結果、現時点でオープンソースシステムだけで実現しようとすると、メディアウィキ (MediaWiki)セマンティック・メディアウィキ (Semantic MediaWiki)SMW+ (Halo extension) を追加する方法以外には無いという結論に至った。本環境では日本語も問題なく扱えた。

インストール


バージョン

  • MediaWiki: 1.15.3 2010-04-07
  • Semantic MediaWiki: 1.5.0 2010-03-07
  • Halo Extension: 1.5.0 2010-04-28

システム構成

  • GNU/Linux RedHat5
  • MySQL 5.1.44
  • PHP 5.2.13
  • Apache 2.2.14
  • Java 1.6.0_18
  • PHPについては –with-mysql –enable-soap の構築時オプションが必要。
  • また、以上の他に、RAP – RDF API for PHP(V0.9.6 2008-02-29) も必要。
  • Halo Extensionについては、smwhalo-1.5.0_0.zipの他に、ts-connector-jena-1.5_1.zip、smwhalo-deploy-1.2.zip、semanticgardening-1.3.1_0.zip、scriptmanager-1.0.0_0.zipが必要で、更に適宜その他の拡張をインストール。詳細は本ページ

MediaWiki
MediaWikiはダウンロードし、それをApacheのDocumentディレクトリ下に展開する。この時、MediaWikiのルートがDocumentRootになることは避けた方が良いと書かれている。
本ルートディレクトリを今後、絶対パスの場合は$IP、URLとしては$RMWと表記する。
続いてブラウザから ‘http://_YourHostAddress_/$RMW/config’ にアクセスする。
ここで必要な項目を入力することでセットアップは全て完了。

PHPが-with-mysqlで構築されていないと、利用データベースがSQLiteになるが、これではSMWが動作しないので注意。
また、SMW+でOWLファイルをインポートするためにはMySQLのデータベースエンジンをMyISAMにする必要に迫られるので、innoDBが推奨されているものの、MyISAMにしておいた方が良い。

$IP/config/ に LocalSettings.php が出来ているので、これを $IP 直下に移動する。
なお、今後、このLocalSettings.phpに次々と様々な情報を追加していくことになる。
私の場合は当該初期生成ファイルに対して以下の変更もしくは追加を行った。
$IPは文字通り”$IP”と記述する。

$wgEnableUploads = true; # 変更

# 以下、追加

$wgLogo = "/img/WikiLogo.png";

include_once("$IP/extensions/ScriptManager/SM_Initialize.php");

include_once("$IP/extensions/SemanticMediaWiki/includes/SMW_Settings.php");
enableSemantics('tm.dbcls.jp');

$wgUseAjax = true;
$smwgMessageBroker = "localhost:8000";
$smwgWebserviceEndpoint = "localhost:8080";
$smwgEnableFlogicRules = true;

include_once("$IP/extensions/SMWHalo/includes/SMW_Initialize.php");
enableSMWHalo('SMWHaloStore2','SMWTripleStore','http://bioinfopedia');

$smwgUseEditDistance = true;

$phpInterpreter="/.../local/bin/php";
require_once("$IP/extensions/SemanticGardening/includes/SGA_GardeningInitialize.php");
$wgGroupPermissions['sysop']['gardening'] = true;

include_once("$IP/extensions/DataImport/includes/DI_Initialize.php");
enableDataImportExtension();

require_once( "$IP/extensions/FCKeditor/FCKeditor.php");

$wgVerifyMimeType = false;

Semantic MediaWiki
ダウンロードして展開すると得られるSemanticMediaWikiディレクトリを$IP/extensions以下にコピーする。
このページに書かれている通り作業すれば問題なし。
ただ、MediaWikiを日本語表示で動作させている場合、データベースのセットアップ時にアクセスするページは ‘http://_YourHostAddress_/$RMW/index.php/Special:SMWAdmin’ ではなく、’http://_YourHostAddress_/$RMW/index.php/特別:SMW管理’ になる。とはいえ、’Special:SMWAdmin’としてもリダイレクトされるので問題ない。

SMW+ (Halo Extension)
いよいよSMW+のインストール。

Semantic MediaWikiと同様にsmwhalo-1.5.0_0.zipを$IP/extension以下に展開する。
$IP/extension/SMWHalo が生成され、そこにINSTALLという名のファイルがあるので、そこに書かれている通りに作業を進めればOK。
ただ、$wgDefaultSkinを’ontoskin3’に変更するように書かれているが、これにするためには、smwhalo-ext-1.5.0_0.zipのインストールも必要となる。
それから、Halo Extension全体にわたり、含まれるシェルスクリプトは改行がDOS(Windows)形式になっているので、Linux環境で実行権限を与えるだけでは動作しない。実行権限を与えると共に、dos2unixコマンドで改行文字の変更をしておく必要がある。

Triple Store

続いて、トリプルストアを用意するため、ts-connector-jena-1.5_1.zipをインストールする。
このパッケージはMediaWikiの拡張ではなく、スタンドアロンサーバーとして動作するので、適宜展開パスを決める。
展開されたファイル群にREADME-TSC.TXTがあるので、そこに書かれている通りに作業する。
初期設定ではトリプルがメモリ内に保存されるのみの設定になっている。
これをMySQLに変えるには、config/jena.propertiesを編集し、DB_TYPE=MySQLにする。
MySQLを非標準のパスにソケットをおいて運用している場合は、DB_PORT=/_PATH_OF_SOCKET_/ と記述する。
./start-triplestore.sh jena console
でサーバーが起動するので、README-TSC.TXTの”2. Wiki Configuration”にある通りに$IP/LocalSettings.phpを編集すればOKなのだが、これだけでは残念ながらMediaWikiから使えない。smwgMessageBroker は初期状態ではポート番号8000で起動しているため、$IP/LocalSettings.phpには
$smwgMessageBroker = "localhost:8000";
と記述する。
これが適切に設定されていないと、$IP/extensions/SMWHalo/includes/storage/SMW_TSConnection.php の実行で失敗する。
‘http://_YourHostAddress_/$RMW/index.php/特別:TSA’ にアクセスして適切に動作していることを確認。
「Initialize」ボタンをクリックして準備完了。

Semantic Gardening Extension

次に、OWLファイルを効率良くインポートするために、semanticgardening-1.3.1_0.zipをインストールする。
この拡張はファイルのアップロードだけでなく、様々な、時間のかかる処理を行う際の各ジョブの管理をしたり、Semantic MediaWiki全体の管理を統一的に行うことが出来る。
それぞれの機能に対応したbotといわれるプログラム群が実際の処理を担う。その1つが利用するため、
$IP/extensions/SemanticGardening/ 以下に wikiexport ディレクトリを作って http サーバーの書き込み権限を与えておく。
その次にオントロジーのインポートを可能にするための作業をこのページを参考にして行う。
なお、RAPのバージョンは0.9.6にしないと少なくとも日本語コンテンツは適切に扱えない。

これで、ようやくOWLファイルのインポートとその内容を反映したサイトの構築を実現する環境が整った。
残りは、MediaWikiの機能であるファイルアップロードを実行可能な設定を行う。
設定方法についてはこのページに書かれており、PHPの実行環境、php.ini の修正が必要となりうる。