[Semantic MediaWikiの使い方②] アノテーションの付け方

# What is this?
* [Semantic MediaWiki](https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki)の導入にあたり必要な知識のまとめ記事第2回
* Semantic MediaWkiの最大の特徴である、アノテーションの付け方を紹介
* 基本的には公式チュートリアル[Help:Getting started/Part 1 (Working with annotations)](https://www.semantic-mediawiki.org/wiki/Help:Getting_started/Part_1_(Working_with_annotations))と関連リンクのまとめ

# アノテーションとプロパティ
* SemanticMediaWikiではMediaWikiでの[カテゴリ](https://qiita.com/DaikichiDaze/items/0eb99249bb922d956595#%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA)とは別に各記事に**アノテーション(Annotation)**をつけることで**プロパティ(Property)**を作成できる。
* このアノテーションとプロパティによって、Wikiを**ナレッジグラフ**[^1]として機能させる事ができる。
[^1]: ナレッジグラフの詳細については別記事を参照ください（まだ未作成ですが。）概要知識は[こちら](https://www.slideshare.net/haradatm/ss-177274220)のスライドに詳しい
* アノテーションをつけることで、各トピック（ページ）とプロパティ（属性・特徴）間の**リンク**を作成できる。
* とはいえ、実例がないとわかりにくいので早速下記へ

# アノテーションの付け方
ここでは[公式ヘルプページ](https://www.semantic-mediawiki.org/wiki/Help:In-text_annotation)の例に従って解説

※公式例は英語であるため、文法的に英語で理解しやすい例になっています。日本語でナレッジグラフを構築する場合は、日本語にあったアノテーションが必要だと考えています。

## チュートリアル
* Wikipediaで[Berlin](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E3%83%AA%E3%83%B3)というページを作ることを考えていく
* 当然、ベルリンのページには`Germany`という内部リンク（ウィキリンク）を含むはず

```MediaWiki:MediaWiki
[[Germany]]
```
* しかしリンクを貼るだけでは、「Berlin」と「Germany」の関係性はわからない（*特徴を持たないリンク*が繋がれるだけ）
    * この関係性を記述するためにSemantic MediaWikiでは以下のように**アノテーション**を行う

```SemanticMediaWiki:SemanticMediaWiki
[[Is capital of::Germany]]
```
* ここでGermanyに付与した`Is capital of`は**プロパティ**という
* 記事（ノード）間のリンク（エッジ）に意味づけをするものである
    * 下図のようなイメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214822/8a58944f-95f0-0701-fc2c-0a8b9626bad5.png)

* アノテーションによってプロパティの記事も作成される
* プロパティ記事へアクセスすると、自動的にプロパティごとの集計が可能（下図イメージ）
    * 厳密には次記事で紹介する*プロパティ型の設定*が必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214822/7e3ebcf1-2256-3039-1dbc-57710dd0d976.png)

## 様々なアノテーションの記法
### アノテーションと同時にアノテーション先へのリンクを作成
```SemanticMediaWiki:SemanticMediaWiki
Classify a [[Example property::link]] with the property "example property."
```

### リンク先ページ名とは異なる代替文字列を表示
```SemanticMediaWiki:SemanticMediaWiki
Make [[Example property::link|alternate text]] appear in place of the link.
```
`link`ページへリンクされるが、記事内では`alternate text`と表示される

### アノテーションを付けるだけでリンクは非表示
```SemanticMediaWiki:SemanticMediaWiki
To hide the property [[Example property::link| ]] from appearing at all use a space as the alternate text.
```
上記代替文字列としてスペースを利用することでリンクを非表示にすることができる

### その他
* [公式チュートリアル](https://www.semantic-mediawiki.org/wiki/Help:In-text_annotation)で紹介されている他細かい記法について内容のみ紹介
* 使用頻度は低そう
    * 階層をもったプロパティを作成（大元のプロパティページは作成しない）
    * `:`を含むプロパティを作成したい場合

# プロパティとカテゴリの違い
ここでは、既に説明した[カテゴリ](https://qiita.com/DaikichiDaze/items/0eb99249bb922d956595#%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA)と[プロパティ](#"アノテーションとプロパティ")の違いについて説明する[^2]

[^2]: 個人的にここまできて、この２つの違いに混乱してきたので少し詳しく解説

それぞれ一言で説明すると、

* カテゴリ：該当ページそのものに対する属性。タグのようなイメージ。
* プロパティ：ページ間の関係性を示す属性

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214822/b7be5a7a-ad64-24b4-17f0-e35a5870332d.png)

* 上記イメージの通り、カテゴリは**ページ（ノード）そのものに付ける属性**。プロパティは**リンク（エッジ）に付ける属性**である
* それぞれカテゴリごと、プロパティごとに集計できるが、その結果も異なる
    * カテゴリで集計した場合は`city`の*カテゴリがついているページ一覧*を取得できるが関係性は見えない
    * プロパティで集計した場合は、`Is capital of`のプロパティがついているページ一覧に加えて、*リンク先の一覧*も合わせて取得できる
    * 例えばベルリンの例に加えて「Tokyo」ページに`Is capital of ::Japan`とアノテーションをつけた場合
        * `Is capital of`で集計すると、"Berlin - Germany"、"Tokyo - Japan"という関係性をもった一覧を取得できる

# 次のステップ
今回はSemanticMediaWikiを使ったアノテーションの付け方とカテゴリとプロパティの違いを紹介した。

ただ、プロパティをより効率的に活用していくためには、各**プロパティのデータ型**を設定していく必要がある。次の記事では「型を付ける目的」「型の付け方」「型の種類」を紹介していく。