MediaWikiのセマンティックフォーム

前回、Semantic MediaWikiプラグインの機能について説明しました。これにより、システム内の構造化データを管理し、それに基づいてさまざまな表現を作成できます。 ここでの軟膏のフライは、ユーザーが追加のマークアップ要素を学ぶ必要があるということです。

今日は、 Semantic Formsの拡張機能について説明します。これにより、Wikiとはまったく異なるWikiを作成し、より多くのユーザーを仕事に引き付けることができます。







Semantic MediaWikiの中心はセマンティックプロパティのメカニズムであることを思い出させてください。 セマンティックプロパティをページに割り当てますが、Wikiリンクを作成するように見えます[[ :: | ]]



[[ :: | ]]



、しかし、それにもかかわらず、これは新しい構文です。 さらに、ユーザーがプロパティ作成のガイドを読んで掘り下げるほど規律がある場合でも、すべての用語に同じ方法で名前を付けることはほとんどありません。

私の歴史的なパーソナリティwikiでは、人々の半分は



までに記述され、他の参加者は







記述され、3番目は



記述し



。 さて、歴史上の人物のリストを取得し、生年月日を表示するには、1つではなく3つのクエリを記述する必要があります。



 {{#ask:[[  ]] | ?  }} {{#ask:[[  ]] | ?  }} {{#ask:[[  ]] | ?  }}
      
      





これらの問題を解決するには、テンプレートとフォームが使用されます。



パターン



パターン ウィキペディアで読む 実装の詳細を隠しながら、Wiki記事で複雑なマークアップを使用するためによく使用されます。 テンプレートの良い例は、ウィキペディアの情報ボックスです。 経験豊富なエディターはhtmlを使用してテンプレートを作成し、インフォボックスのすべての色とパディングが目に見えるようにします。一方、通常の記事の作成者は次の簡単な構文を使用して、Wikiページにインフォボックスを挿入します:



 {{  | 1=  1 | 2=  2 | 3=  3 }}
      
      







小さな例:レオナルドダヴィンチのロシア語版ウィキペディアページで[ 編集 ]ボタンをクリックします。 コールテンプレート



、素晴らしいインフォボックスに変換されます。 テンプレート自体は、色、フォント、インデントなど、デザインに関連するものを定義します。







テンプレートの実装は、テンプレート名前空間に保存されます。 名前付きテンプレートパラメータは、3つの中括弧で囲まれ、呼び出し時には、パラメータ値が適切な場所で置き換えられます。 テンプレートを使用すると、情報ボックスだけでなく均一に実行できます。 テンプレートを使用して、日付と生年月日によってデータをdiv要素にラップされたフレーズとしてデザインする小さな例を次に示します。

テンプレートコード 結果
 <div class="awesomebox">{{{}}}  {{{ }}}.    {{{ }}}</div>
      
      



     15.4.1452.     
      
      







セマンティックテンプレート



私たちにとって興味深いのは、テンプレートテキストにセマンティックプロパティが配置されている場合、テンプレートを使用するすべてのページにこのプロパティが設定されることです。 Historical Personsを使用した例にこのアプローチを適用してみましょう。



パラメータを使用して同じ名前のテンプレートを作成します。

テンプレートコード 結果
 <div class="awesomebox">{{{}}}  [[ ::{{{ }}}]]...
      
      



     15.4.1452...
      
      







悪くない! オブジェクトを説明するときにユーザーが混乱することはありません。テンプレートを使用するすべてのページには、



プロパティがあります。 これから2つの重要な点が続きます。

  1. ウィキの作成者は、セマンティックプロパティについて何も知る必要がなくなりました。 彼らはただパターンを使用します。
  2. SMWをインストールする前に



    テンプレートが既に存在していた場合、単にセマンティックプロパティを追加して、ユーザーが何も気付かないように構造化データの編成を利用できます。 これは、痛みを伴わないセマンティフィケーションに最適な方法です。


ただし、テンプレートは同じデータを異なる方法で書き込む問題を解決できません。 24 1893 .



ような



を示すものもあれば、 . 1349 . . .



などのレコードを使用するものもあります. 1349 . . .



. 1349 . . .



またはさらに悪いことに、 . .



。の . .



誰がどの形式で日付を示しているかを追跡し、 #ask



リクエストでの使用に適したフォームに手動で#ask



する必要が#ask



ます。



意味形式







これが意味形式が救いをもたらす場所です。 強力で巨大なプラグインSemantic Formsは、ウィキ作成者にさまざまな入力要素を提供するため、コミュニティはデータを手動で統合する時間を無駄にしませんでした。 セマンティックフォームの構文はMediaWikiの構文全体と同じくらいugいですが、フォームを手動で作成しないようにする方法はたくさんあります。 最も一般的なポイントから始めましょう。



フォームは、html、wikiマークアップ、および特別なタグを使用して、 Form



名前空間のwikiページに記述されます。 他のWikiページと同様に編集できます。 フォームはテンプレートに記入する手段です;作成するときは、まずテンプレートパラメータについて考えてください!



通常、フォームテキストは次の構造になっています(わかりやすくするためにコードをフォーマットしようとしましたが、MediaWikiでは許可されていないことに注意してください)。



 {{{info| < [ ]> }}} <!--    :     ,         . --> {{{for template |  }}} <!--, ,     --> {{{field |   | input type=text }}} <!--   --> {{{field |   | input type=calendar}}} {{{field |   | input type=calendar}}} {{{field |  | input type=textarea}}} {{{end template}}} <!--   --> {{{standard input|save}}} {{{standard input|cancel}}} <!--  , ,    -->
      
      







Semantic Formsで最も重要なタグは、もちろんfield



です。 入力要素を形成します。テキストフィールド、ドロップダウンリスト、日付を入力するためのカレンダーなどです。入力要素の名前は、テンプレートパラメータの名前と一致する必要があります。たとえば、カレンダー{{{field | | input type=calendar}}}



{{{field | | input type=calendar}}}



{{{field | | input type=calendar}}}



は、



テンプレートのパラメーター{{{ }}}



します。 このタグにはさまざまなパラメータがあり、デフォルトのテキストを入力にプリロードしたり、必須にしたり、有効な値のリストを設定したりすることができます。 完全なドキュメントはヘルプページにあります。



セマンティックフォームの場合、非常に多くの種類の入力が記述されています。 それらのいくつかはセマンティックフォームに直接配置され、いくつかはセマンティックフォーム入力の別々の拡張で取り出されます。 標準のチェックボックス、ラジオボタン、入力フィールド、リストに加えて、より興味深い入力を自由に使用できます(独自の記述をしたい場合は、マニュアルを参照しください)。



入力の名前 説明 どのタイプの 写真
デイトピッカー 日付選択カレンダー 日付
タイムピッカー タイミングのためのツール(あなたはより良い名前を付けることはできません) 日付 画像
2つのリストボックス 左のリストの値は、クリックすると右にスローされます 任意のタイプ。 可能な値は、 values



オプションを使用してプリロードする必要があります
画像
メニュー選択 ツリーメニューから値を選択する 任意のタイプ。 可能な値は、 structure



パラメーターにプリロードされています。
画像


離れているのは、地理座標を入力するための入力です。 マップ上の特定の場所を突くことにより、座標を指定できます。





通常、フォームはタブレットの形で構成されます。 入力要素のラベルは、通常のwikiマークアップまたはhtmlを使用して作成されます。 MediaWikiテーブル構文を使用するフォームの実際のコード例は次のとおりです。



ユニットコードフォーム標準
 <noinclude>   « ».       ,    ;       ,        . {{#forminput:form= |autocomplete on category= }} </noinclude><includeonly> {{{info|page name=< []>|create title=  }}} <div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div> {{{for template| }}} {| class="formtable" ! : | {{{field||input type=text}}} |- !  :<br><p class="sfFieldDescription" style="font-size:0.7em; color:gray;">   .        .   .</p> | {{{field| |input type=textarea with autocomplete|Description=   .        .   .|rows=10}}} |- !  :<br><p class="sfFieldDescription" style="font-size:0.7em; color:gray;">   .        .   .</p> | {{{field| |input type=textarea with autocomplete|Description=   .        .   .|rows=10}}} |- !  :<br><p class="sfFieldDescription" style="font-size:0.7em; color:gray;">   .        .   .</p> | {{{field| |input type=textarea with autocomplete|Description=   .        .   .|rows=10}}} |- !   : | {{{field|  |input type=textarea}}} |- !   : | {{{field|  |input type=textarea with autocomplete}}} |- ! style="display:none" |  : | {{{field| |hidden|TextBeforeField=style="display:none" | }}} |} {{{end template}}} {{{standard input|summary}}} {{{standard input|save}}} {{{standard input|cancel}}}
      
      







そのため、小さなフォームを作成しましたが、それをなんとか実行する必要があります。



実行中のフォーム





Form



名前空間のページは、 Form



単なるソースコードです。 フォームを実行するには(このプロセスを解釈と考えます)、いくつかの方法があります。





フォーム生成



最初からセマンティックフォームを記述することは、感謝のない不快なことです。 通常のwikiマークアップエディターがない場合( WikEdを試してみたい人はこれが最高です)、エラーの可能性は非常に高くなります。 そのため、フォーム(およびテンプレート)を生成することをお勧めします。私たちには、いくつかのツールが用意されています。



まず、セマンティックフォームは、テンプレート、セマンティックプロパティとフォームの説明を生成するように設計されたいくつかのサービスページを提供します。 これらのページはSpecial:CreateProperty



Special:CreateTemplate



およびSpecial:CreateForm



と呼ばれます。 彼らはあなたの人生を大いに簡素化します。 Special:CreateClass



は、オブジェクトのクラスを一挙に記述するSpecial:CreateClass



ができSpecial:CreateClass



。必要なすべてのプロパティ、テンプレート、フォームを作成します。





これらすべての特別なページの問題は、既存のテンプレートとフォームの編集が許可されないことです。フォームインターフェースを作成する最初のステップは簡単にできますが、MediaWikiテーブルの構文を発明した人たちに不親切な言葉で覚えて、手動で微調整する必要があります。 新しいテンプレートオプションと入力要素を追加するには、複数のページ間をジャンプする必要があります。 だからそれは除去です。



スキーマ:ページスキーマ拡張





より高度なアプローチでは、 Page Schemasプラグインをインストールする必要があります 。 スキーマは、カテゴリに関連付けられたXMLの説明であり、カテゴリに属する​​オブジェクトのプロパティ、スキーマの説明に使用されるテンプレート、およびこれらのテンプレートが入力するフォームに関する指示が含まれます。



ページスキーマを使用すると、新しい色が生まれます。 [ :



]ページに移動し、[ Create Schema



]ボタンをクリックします。 私のサービスでは、同じ名前のテンプレートに入力する



フォームを作成する必要があると言うスキームのビジュアルエディターです。 すぐに4つのフィールド(











日、



)を作成し、作成する必要があるセマンティックプロパティ、使用する入力要素、およびそれらに指定する追加のパラメーターを説明します。



エディターは画面上の多くのスペースを占有するため、1つのフィールド



編集のみを表示します。





スキーマエディターはXMLドキュメントを生成します。これは、



カテゴリのページに保存されます。 [ Generate pages



Generate pages



]ボタンをクリックすると、ページスキーマによって必要なすべてのページ(フォーム、テンプレート、プロパティ)が生成されます。



フィールドを追加する場合、テンプレートを手動で編集し、フォームを編集して、プロパティ:出生地ページを作成する必要はありません。 私は単に



カテゴリーページに戻り、 Edit schema



クリックして新しいフィールドを追加します。 その後、更新されたスキームに従って、興味のあるすべてのページを再生成するようページスキーマに依頼します。



ビジュアルインターフェイスを説明するために、スクリーンキャストはテキストシートよりもはるかに優れているため、一度に短いビデオを録画しました。 レコーディング以来、ページスキーマに多くの新機能を追加することができ、さらに多くの機能を追加する予定です。







使用例



フォーム入力と動的に更新されるデータの組み合わせにより、MediaWikiをすぐに認識できない多くのWebシステムが生まれました。 SMWコミュニティは、最も興味深いセマンティックWikiが毎月選択されるWiki of the Monthコンテストのホストを開始しました。 経験によれば、フォームを使用すると、ユーザー入力のしきい値を大幅に下げることができ、悪夢のような編集者でさえ想像できない人々をウィキに引き付けることができます。



さまざまなウィキで実際に使用されているいくつかのフォームを次に示します。 Gardenology wikiで植物を記述するための複雑なフォーム







しかし、私たちはすでに技術的な先見の明を扱うためにこのフォームを作成しました。







おわりに



あまり語りませんでした たとえば、フォームはページを作成する手段としてだけでなく、セマンティッククエリのフォームとしても使用できるという事実。 フォームを再利用する方法、編集プロセス中にフォームを再構築する方法、それらに基づいて簡単な投票投票を作成する方法について。 今後の記事で見たいものを書いてください



参照資料





vedmaka 、最初の絵の完全な哀osに感謝します!

すべての図面をCC-BY 3.0ライセンスで公開します



All Articles