小さくて、単純で、理解しやすく、学びやすく、多くの領域に適用可能と思われるトピックマップの例として、家系図トピックマップを取り上げます。
オントロジ
ここでは、以下の型から構成される家系図トピックマップを考えます。
図1. は、家系図トピックマップのオントロジを表現しています。太線の四角が "人" 型のトピックを表現し、"生年月日" と "死亡年月日" の2つの内部出現をもっていることを表しています。
"人" 型のトピックは、"親子" 及び "夫婦" の2種類の関連型によって関連付けられていることも表現しています。"親子" 及び "夫婦" の関連型は、どちらも、二項関連、すなわち、2つのトピックを関係付ける関連です。そして、"親子" 関連型で関係付けられるトピックは、一方が、"父親" または "母親" 関連役割型をもち、他方が、"息子" または "娘" 関連役割型をもちます。また、"夫婦" 関連型で関係付けられるトピックは、一方が、"夫" 関連役割型をもち、他方が、"妻" 関連役割型をもちます。
図1. 家系図トピックマップのオントロジ
上記の家系図トピックマップのオントロジを、 LTM (Linear Topic Map) 構文 で記述した例を以下に示します。LTM については、The Linear Topic Map Notation 及び トピックマップ入門 (書籍) を参照してください。
最初に、有効範囲 (Scope) を設定するためのトピックが定義してあります。ここでは、トピック名に、英語、及び、日本語という有効範囲を設定するために、"En" と "Ja" という名前のトピックが定義してあります。その後に、オントロジに従って、トピック型 (Topic Type)、関連型 (Association Type)、関連役割型 (Association Role Type)、及び、出現型 (Occurrence Type) が定義してあります。
@"utf-8"
/* ----------------- Scope -------------------------------------- */
[en = "En"
@"http://www.topicmaps.org/xtm/1.0/language.xtm#en"]
[ja = "Ja"
@"http://www.topicmaps.org/xtm/1.0/language.xtm#ja"]
/* ================= ONTOLOGY ======================================== */
/* ----------------- Topic Types -------------------------------- */
[person = "person" / en
= "人" / ja
@"http://www.knowledge-synergy.com/psi/common.xtm#person"]
/* ----------------- Association Types -------------------------- */
[married-couple = "Married couple" / en
= "夫婦" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#married-couple"]
[parent-child = "Parent Child" / en
= "親子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#parent-child"]
/* ----------------- Association Role Types --------------------- */
[father = "father" / en
= "父親" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#father"]
[mother = "mother" / en
= "母親" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#mother"]
[husband = "husband" / en
= "夫" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#husband"]
[wife = "wife" / en
= "妻" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#wife"]
[son = "son" / en
= "息子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#son"]
[daughter = "daughter" / en
= "娘" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#daughter"]
/* ----------------- Occurrence Types --------------------------- */
[birth-date = "Birth date" / en
= "生年月日" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#birth-date"]
[death-date = "Death date" / en
= "死亡年月日" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#death-date"]
/* ================= INSTANCE ======================================== */
/* ----------------- Topics -------------------- */
/* ************************************** */
/* ここに、トピックを追加 */
/* ************************************** */
/* ----------------- Associations -------------- */
/* ************************************** */
/* ここに、関連を追加 */
/* ************************************** */
|
トピック、関連のインスタンスの追加
次に、上記の雛型に、トピックのインスタンスと関連のインスタンスを追加していきます。
図2. に示す家系図を構成するトピックのインスタンスと、関連のインスタンスの記述例を示します。
図2. 家系図の例
まず、一つのインスタンストピック、すなわち、"内藤 一蔵" トピックの記述例を以下に示します。
/* ----------------- Topics -------------------- */
[ichizo : person = "Ichizo Naito" / en
= "内藤 一蔵" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-ichizo"]
{ichizo, birth-date, [[1895年05月12日]]}
{ichizo, death-date, [[1955年11月24日]]}
|
この、記述例の解説を以下に示します。
/* ----------------- Topics -------------------- */
[ichizo : person = "Ichizo Naito" / en
------ ------ ------------ --
(1) (2) (3) (4)
= "内藤 一蔵" / ja
--------- --
(3) (4)
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-ichizo"]
------------------------------------------------------------------------
(5)
{ichizo, birth-date, [[1895年05月12日]]}
------ ---------- --------------
(1) (6) (7)
{ichizo, death-date, [[1955年11月24日]]}
------ ---------- --------------
(1) (6) (7)
(1) トピックID
(2) トピック型
(3) 基底名 (base name)
(4) 有効範囲 (scope)
(5) 主題指示子 (subject indicator)
(6) 出現型
(7) 内部出現 (文字リテラル)
* トピックは、[ ] で囲みます。
* 出現は、{ } で囲みます。
* 内部出現の文字リテラルは、[[ ]] で囲みます。
|
"内藤 一蔵" トピックを含めた7つのインスタンストピックの記述例を以下に示します。
/* ----------------- Topics -------------------- */
[ichizo : person = "Ichizo Naito" / en
= "内藤 一蔵" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-ichizo"]
{ichizo, birth-date, [[1895年05月12日]]}
{ichizo, death-date, [[1955年11月24日]]}
[fumi : person = "Fumi Naito" / en
= "内藤 文" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-fumi"]
{fumi, birth-date, [[1902年06月15日]]}
{fumi, death-date, [[1967年03月19日]]}
[taro : person = "Taro Naito" / en
= "内藤 太郎" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-taro"]
{taro, birth-date, [[1925年09月26日]]}
{taro, death-date, [[2000年02月25日]]}
[hanako : person = "Hanako Naito" / en
= "内藤 花子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-hanako"]
{hanako, birth-date, [[1930年02月24日]]}
{hanako, death-date, [[(生存中)]]}
[makoto : person = "Makoto Naito" / en
= "内藤 真" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-makoto"]
{makoto, birth-date, [[1955年07月16日]]}
{makoto, death-date, [[(生存中)]]}
[chieko : person = "Chieko Naito" / en
= "内藤 智恵子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-chieko"]
{chieko, birth-date, [[1958年11月23日]]}
{chieko, death-date, [[(生存中)]]}
[kazuko : person = "Kazuko Naito" / en
= "内藤 和子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-kazuko"]
{kazuko, birth-date, [[1957年05月08日]]}
{kazuko, death-date, [[(生存中)]]}
|
次に、一つの関連、すなわち、"内藤 一蔵" と "内藤 文" は、"夫婦" である、という関連の記述例を以下に示します。
/* ----------------- Associations ------------------------------- */
/* ----------------- Association Type: married-couple ------- */
married-couple( ichizo : husband, fumi : wife )
|
この、記述例の解説を以下に示します。
/* ----------------- Associations ------------------------------- */
/* ----------------- Association Type: married-couple ------- */
married-couple( ichizo : husband, fumi : wife )
-------------- ------ ------- --- ----
(1) (2) (3) (2) (3)
(1) 関連型
(2) 関連のメンバトピック
(3) 関連役割型
|
"内藤 一蔵" と "内藤 文" は、"夫婦" である、という関連を含めた3つの "夫婦" 関連と、6つの "親子" 関連の記述例を以下に示します。
/* ----------------- Associations ------------------------------- */
/* ----------------- Association Type: married-couple ------- */
married-couple( ichizo : husband, fumi : wife )
married-couple( taro : husband, hanako : wife )
married-couple( makoto : husband, chieko : wife )
/* ----------------- Association Type: parent-child -------- */
parent-child( ichizo : father, taro : son )
parent-child( fumi : mother, taro : son )
parent-child( taro : father, makoto : son )
parent-child( hanako : mother, makoto : son )
parent-child( taro : father, kazuko : daughter )
parent-child( hanako : mother, kazuko : daughter )
|
最後に、インスタンスを追加した結果、出来上がったトピックマップの記述例を以下に示します。
@"utf-8"
/* ----------------- Scope -------------------------------------- */
[en = "En"
@"http://www.topicmaps.org/xtm/1.0/language.xtm#en"]
[ja = "Ja"
@"http://www.topicmaps.org/xtm/1.0/language.xtm#ja"]
/* ================= ONTOLOGY ======================================== */
/* ----------------- Topic Types -------------------------------- */
[person = "person" / en
= "人" / ja
@"http://www.knowledge-synergy.com/psi/common.xtm#person"]
/* ----------------- Association Types -------------------------- */
[married-couple = "Married couple" / en
= "夫婦" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#married-couple"]
[parent-child = "Parent Child" / en
= "親子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#parent-child"]
/* ----------------- Association Role Types --------------------- */
[father = "father" / en
= "父親" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#father"]
[mother = "mother" / en
= "母親" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#mother"]
[husband = "husband" / en
= "夫" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#husband"]
[wife = "wife" / en
= "妻" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#wife"]
[son = "son" / en
= "息子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#son"]
[daughter = "daughter" / en
= "娘" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#daughter"]
/* ----------------- Occurrence Types --------------------------- */
[birth-date = "Birth date" / en
= "生年月日" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#birth-date"]
[death-date = "Death date" / en
= "死亡年月日" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#death-date"]
/* ================= INSTANCE ======================================== */
/* ----------------- Topics ------------------------------------- */
[ichizo : person = "Ichizo Naito" / en
= "内藤 一蔵" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-ichizo"]
{ichizo, birth-date, [[1895年05月12日]]}
{ichizo, death-date, [[1955年11月24日]]}
[fumi : person = "Fumi Naito" / en
= "内藤 文" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-fumi"]
{fumi, birth-date, [[1902年06月15日]]}
{fumi, death-date, [[1967年03月19日]]}
[taro : person = "Taro Naito" / en
= "内藤 太郎" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-taro"]
{taro, birth-date, [[1925年09月26日]]}
{taro, death-date, [[2000年02月25日]]}
[hanako : person = "Hanako Naito" / en
= "内藤 花子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-hanako"]
{hanako, birth-date, [[1930年02月24日]]}
{hanako, death-date, [[(生存中)]]}
[makoto : person = "Makoto Naito" / en
= "内藤 真" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-makoto"]
{makoto, birth-date, [[1955年07月16日]]}
{makoto, death-date, [[(生存中)]]}
[chieko : person = "Chieko Naito" / en
= "内藤 智恵子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-chieko"]
{chieko, birth-date, [[1958年11月23日]]}
{chieko, death-date, [[(生存中)]]}
[kazuko : person = "Kazuko Naito" / en
= "内藤 和子" / ja
@"http://www.knowledge-synergy.com/psi/family-tree_0_9#person-id-kazuko"]
{kazuko, birth-date, [[1957年05月08日]]}
{kazuko, death-date, [[(生存中)]]}
/* ----------------- Associations ------------------------------- */
/* ----------------- Association Type: married-couple ------ */
married-couple( ichizo : husband, fumi : wife )
married-couple( taro : husband, hanako : wife )
married-couple( makoto : husband, chieko : wife )
/* ----------------- Association Type: parent-child -------- */
parent-child( ichizo : father, taro : son )
parent-child( fumi : mother, taro : son )
parent-child( taro : father, makoto : son )
parent-child( hanako : mother, makoto : son )
parent-child( taro : father, kazuko : daughter )
parent-child( hanako : mother, kazuko : daughter )
|
表示
作成したトピックマップは、トピックマップツールを用いて、表示したり、問合せしたりできます。以下にOKS (Ontopia Knowledge Suite) のツール群の中の Omnigator 及び VizDesktop での表示例を、図3. 図4. 図5. に示します。
図3. 家系図トピックマップの Omnigator での表示例1.
図4. 家系図トピックマップの Omnigator での表示例2.
図4. 家系図トピックマップの VizDesktop での表示例.
さあ、作ってみましょう
さあ、次は皆さんの番です。ぜひ、自分ちの家系図トピックマップを作成してみてください。
新しいトピック型、関連型、関連役割型、出現型等を追加してオントロジの拡張にも挑戦してみてください。
質問、コメント等は、motom@green.ocn.ne.jp までメールしてください。
一家に一家系図トピックマップを!
参考文献
|