DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:devel:metadata

メタデータ

Wikiページに保存された内容がデータだとすると、最終更新日時や更新したユーザー、ファイルサイズなどは、すべてそのページのメタデータとして扱われます。

保存

DokuWikiはすべてのメタデータを(データベースやレジストリのような)一つの場所にまとめて保存しません。メタデータは基本的にデータファイル自体の情報(たとえば、ファイルサイズ、最終更新日時)であり、その他のメタデータはDokuWikiがmetaディレクトリで管理します。メタデータはページ名に.metaが追加されたファイル名で保存されています。

メタデータの生成

metaディレクトリの情報は最初にメタデータレンダラーによって作成されます。レンダラーは、各ページごとにmetaディレクトリに$id.metaという名前でメタデータを作成します。このファイルはPHPの多次元連想配列で、keyはDublin Coreの要素名に従います。レンダラーはページが保存されたり、indexerによってDokuWiki以外のスクリプトなどでページが追加されると実行されます。

メタデータを Set/Get する関数

メタデータを扱う2つの関数はinc/parserutils.php内にあります。

  • p_get_metadata($id, $key, $render) はページのメタデータを返します。
    • $id はページIDです。(必須)
    • $key は取得するメタデータキーです。デフォルトでは false です。キーが渡されない場合にはすべてのメタデータを配列で返します。
    • render はboolean値で、ページのメタデータが存在しない場合にレンダラーが生成するかどうかを指定します。デフォルトは false です。
  • p_set_metadata($id, $data, $render, $persistent) はメタデータ内のプロパティを設定します。
    • $id はページIDです。(必須)
    • $data はメタデータにセットするkey⇒valueペアの配列です。(必須)
    • $render は boolean 値で、メタデータを生成するかどうかを指定するオプションです。デフォルトは false です。
    • $persistent は boolean 値で、特定のメタデータが次のメタデータ生成まで保持されるかどうかを指定します。デフォルトは true です。

データ構造

現在、コアのメタデータレンダラーが保存している構造は次のようになっています。

  • 'title' – string, 最初の見出し
  • 'creator' – string, ページの作成者のフルネーム
  • 'description' – array
    • 'abstract' – 生のWikiテキストの一部分 (250 ~ 500 文字)
    • 'tableofcontents' – array, 見出し(header)のID('hid')、タイトル('title')、list item 型('type')、見出しのレベル('level')
  • 'contributor' array, 編集に関わったユーザーのユーザーID⇒フルネームの配列
  • 'date' – array
    • 'created' – timestamp, 作成日
    • 'modified'– timestamp, 最後の変更日(小変更以外の場合のみ)
    • 'valid'
      • 'age' – seconds, ページが更新されなければいけない時間まで何秒か('rss'構文でのみ使用)
  • 'relation' – array
    • 'isreferencedby' – array, このページをリンクしている元ページ。ページID ⇒ boolean (存在するかかどうか)の配列。
    • 'references' – array, このページがリンクしているリンク先ページ。ページID ⇒ boolean (存在するかどうか)の配列。

加えて、プラグインもメタデータ要素をサポートしています。現在次のようなものがあります。

  • 'relation' – array
    • 'ispartof' – array, このページを内包(include)している元ページの配列。ID ⇒ boolean (存在するかどうか)(include plugin)
    • 'haspart' – array, このページが内包しているページの配列。ID ⇒ boolean (存在するかどうか)(include plugin)
  • 'subject' – array, タグのリスト(tag plugin)
  • 'type' – string, ドラフトのデータ (blog plugin)

プラグイン等で外部からメタデータを扱う場合には、Dublin Core element set のキーを使用することを推奨します。

メタデータの持続性

DokuWikiの内部では、メタデータは2つの配列で管理されており、それぞれcurrent(現在の)とpersistent(保持・持続する)といいます。このpersistent配列には、レンダラーによる処理で削除されるべきでないkey/valueペアが複製されています。p_get_metadata()によるすべてのメタデータ取得処理はcurrentから読み出されます。

Persistentなメタデータには次のようなものがあります。

  • 'creator' (ページ作成者)
  • 'contributor' (ページ編集者)

メタデータとプラグイン

ここまでで述べたget/setの方法に加え、プラグインがメタデータに関与できる方法が2つあります。

  1. Syntax Pluginsでは、render()メソッド内で$format==“metadata”の場合にcurrentページのメタデータを作成できます。 メタデータのkey/valueペアは renderer->meta 配列に追加でき、persistentな値もrenderer->persistentに追加できます。
  2. Action Pluginsでは、PARSER_METADATA_RENDERメソッドに処理する関数を登録することで、メタデータのレンダリング前後にメタデータの読み出しや変更ができます。
ja/devel/metadata.txt · 最終更新: 2010-02-12 10:55 by iobataya

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki