Help:プロパティと型

プロパティと型 は、Semantic MediaWiki で意味的データを入力するための基礎となります. プロパティは 《Wiki ページ中の値用のカテゴリ》 とよく似ており、MediaWiki におけるリンクによく似た構文の簡単なタグによって記述されます：


 *  プロパティ名::値  

この命令文は、プロパティ名 で与えられるプロパティの 値 を定義します. この命令文が記述されたページでは 値 テキストのみが表示され、プロパティ指定部分は表示されません.

記事中に記述されているリンクは、このようにプロパティ情報を付加するだけで、簡単に高機能化 （意味化） できます. その他の データ型 （数値や日付など） の記述を注釈するためには、ちょっとした編集手順が必要となります.

リンクをプロパティに置き換える
ウィキペディアの ベルリン に関する記事について考えて見ましょう. この記事には他の記事へのリンク （例えば 《ドイツ》、《欧州連合》、《米国》 など） が多数記載されています. しかしその中でも、《ドイツ》 へのリンクには特別な意味があります. ベルリンはドイツの首都であるが故に、このリンクがここに置かれているのです. この知識をコンピュータが活用できるように、この記事テキストのリンク

ドイツ

に <タグ> をつけて、《首都属性》 を有するリンクであることを識別できるようにしたいですね. Semantic MediaWiki でこれを行うには、カッコ内部のリンクテキストの前に、プロパティ名と :: を配置します.

Is capital of::ドイツ

この記事では、上記のテキストは元と同じく 《ドイツ》 への単純なハイパーリンクとして表示されています. 付加されたテキスト capital of はドイツへのリンクを分類する プロパティ の名称です. カテゴリの場合と同様に、ユーザは任意のプロパティ名を使用できますが、Wiki のどこかで既に使用されているプロパティを再利用可能ならそうすべきです.

この再利用を行いやすくするために、各カテゴリがそれぞれ専用の記事ページを持っているのと同様に、全てのプロパティは自分用の記事ページを持ちます. Wiki で使用されている全てのプロパティは Special:Properties （全てのプロパティ） で確認できます. カテゴリ記事には接頭辞 Category: が付くのと同様に、プロパティ記事を他の記事と区別するために接頭辞 Property: が付きます. 従って MediaWiki 標準機能の Special:Search （検索） を使用しても既存のプロパティを探すことができます. カテゴリと同様、プロパティも記事ページを空白のままとすることは可能ですが、プロパティの使用目的と正しい使用方法の記載することを強く推奨します.

ページにプロパティを追加する方法は他にもたくさんあります:

テキストの値をプロパティに置き換える
Wiki 記事には、他の記事へのリンクの他にも、有用な情報がたくさんあります. 例えば、ベルリン の記事には、人口数の記述があります. この知識をコンピュータプログラムで処理可能にするには、記事中のテキスト

3,396,990

に、この数値が "人口プロパティ" の値であることを示す "タグ" を付加するとよいですね. Semantic MediaWiki ではこのタグとして、テキストの前にプロパティ名と :: を記述して  括弧で囲みます. すなわち以下のように記述します:

population::3,396,990.

これでタグが動作します. しかしながら、上記のタグはページ 3,396,990 へのリンクとして表示されてしまいます. 全ての人口数が専用記事を持つのは、ちょっと変ですね. また、人口順に並べ替えたドイツの都市一覧を作成したい場合、このままでは記事名のアルファベット順でソートされてしまい、数値順にはなりません. 例えばアルファベット順では、"1,000,000" の後に "345" が来てしまいます. 以上の問題を解決するには、"population" が数値であり、Wiki ページへのリンクではないことを Semantic MediaWiki に教えてやればよいわけです. これは "population" プロパティに "型" を指定することで行います. その詳細については次のセクションで説明します.

プロパティのデータ型
Semantic MediaWiki には、プロパティに使用する組み込み データ型 がいくつかあります. 前述の人口の例では、最もふさわしい型は Number です. この前置子 "Type:" も "Property:" と同様に、通常記事と異なり、型に関して記述した記事であることを明示する名前空間識別子です. さてここで我々は "population" に、このプロパティが "Type:Number" を持つことを示す特別なプロパティを設定したいわけです. この機能をサポートするために Semantic MediaWiki には、Property:Has type という特別プロパティが組み込まれています. この特別プロパティを記述する構文は他の通常のプロパティと同様で、Property:Population 記事に以下のように記述します:

Has type::number

（ここでは Type: 名前空間を指定する必要はありません. ）

Semantic MediaWiki は Property:has type のような 特別プロパティ がいくつあるか知っています. Wiki にこれらのプロパティの専用記事があるかどうかにかかわらず、これらのプロパティは既定の意味を持っていて、他のプロパティと同様に評価されます.

データ型はプロパティを評価する上で非常に重要です. 第 1 に、データ型はツールが与えられた値をどのように処理すべきかを指定します. 例えば、検索結果での値の表示方法やソート方法などに関してです. 第 2 に、データ型はどの値が同じ意味をもつか知るために必要です. 例えば、値 "1532” と "1,532”、"1.532e3" は全て同じ値にエンコードされます. 最後に、いくつかのデータ型は、以下に示す特別な挙動を示します. これらの理由により、全てのプロパティはデータ型を指定した上で使用されるべきなのです.

前述の "capital of" プロパティにデータ型を設定していない理由は、既定のデータ型が Page であり、そのままでリンクとして表示されるためです. しかしたとえ Type:Page が既定値であっても、将来既定値が別のデータ型に変更される場合や、単にユーザの混乱を防ぐためにも、全てのプロパティにデータ型を明示指定すべきでしょう.

ページリンクで使用したプロパティタグは、他のデータ型においても同様に使用できます. 以下に例をいくつか示します.

データ型の一覧
プロパティを型で区別することで、プロパティは全く異なる種類の値を表すことができます. 使用可能な全ての型の一覧は Special:Types （型） にあります. 使用可能な型は以下の通りです:

URL と E メールアドレスを指定するための、特別な文字列型の応用型がいくつかあります:

いくつかの機能拡張はデータ型を追加します:

一覧表と "Allows value"
SMW には "列挙型"、すなわち取り得る値の有限集合を持つデータ型はありません. その代わりどのプロパティにおいても、特別プロパティ Property:Allows value を使用して許可値を列挙することで、取り得る値を限定することができます. この機能は全てのデータ型で動作します.

単位
数値型 では数値の後に単位を記述して、値を区別することができます （例: "30.3 mpg" と "47 km/liter" は区別されます）が、これらを換算することはできません. 複数の単位書式および自動換算をサポートするには、 追加単位 を持つ独自のデータ型を定義します. この追加データ型では、標準表記された値を相互に自動的に換算できます. 従ってユーザは、各記事やクエリでそれぞれ指定された単位に揃えたり、他の記事のプロパティ値を比較する作業から開放されます.

特別プロパティ
本ページでは、プロパティのデータ型を定義する特別プロパティ Property:Has type について既に言及しました. SMW には他にも、特別な意味を持つ定義済み特別プロパティがあります （Wiki 上にこれらのプロパティ用のプロパティページが作成されていなくても、です）. これらの名前をプロパティ名として使用することは できません が、SMW 1.4.0 より閲覧ツールおよびクエリツールでこれらの名前を他のプロパティ名と同様に使用できるようになりました. より詳細な情報については Category:Special property および左記中の個々のプロパティページを参照してください.

#set を使用した非表示注釈
通常の二重大括弧タグを使用する代わりに、#set パーサ関数を使用しても意味的データを定義できます. この関数は、一組のプロパティ名と値を受け取って意味的データとして保存しますが、画面には何も表示しません. 例えば以下のようになります:


 * 1) set 呼び出しは、Wiki リンク等の大括弧の中にある文字列やテキスト値を保存したい場合に特に有効です.  この場合には、通常の SMW タグは動作しないことが多々あります.

反復イベントの定義
別の複合型として、反復イベント型があります. これは、あらかじめ指定された規則 （週例会議等） に従って定められる、複数日時を持つイベントを示します. これらのプロパティの値は #set_recurring_event パーサ関数を使用して定義します. この関数は #set と同じ "沈黙" 関数で、画面に何も表示しません. この関数の呼び出し方法の例は以下の通りです:

より詳細な情報に関しては Help:Recurring events を参照してください.

旧バージョンでの取り扱い
SMW の初期バージョンでは、Page 型プロパティは 関係 と呼び、この型のプロパティのみプロパティ名をリンク文字列を二重コロン （::</tt>） で区切る構文を使用していました. 他のプロパティ （数値、文字列等） は 属性 と呼び、コロン等号 （:=</tt>） で区切っていました.

SMW 1.0 における他の変更点については、Upgrading from SMW 0.7 to SMW 1.0 を参照してください. SMW の初期バージョンを現在でも使用している場合は、バージョン 0.7 での注釈について説明する文書として semweb:Help:Annotation (SMW0.7) を参照してください.