Historical Event Markup and Linking (HEML) projectの仕組みをRDFに取り込めないかと、いろいろ試してみたのだが、構文を変えるとHEML側のCocoonによるシステムがうまく認識してくれないようなので、方針を変更。歴史について書いたXHTMLに一定のルールでclass属性を適用し、そこからXSLTでRDFicalを生成、さらにそれをXSLTでHEMLに変換することにした(直接HEMLを生成することも可能)。
このサイトの初期に作成した古い文書「History of Japan's Literature」を引っ張り出してきて、時代や作品、作者などのマーク付けを試みる。普通の文章は、イベントカレンダーのようにきちんと構造化されているわけではないので、単純な入れ子ではRDFicalやHEMLになるようなマーク付けはできない。そこで、出来事(時代や作品)のラベルにあたる語句にidを与え、年代、作者といった要素をclass="ref.idvalue"
というクラスでそのラベルと結びつけてみた。
<em class="ref.makuranososhi
dc.creator
">Sei Shonagon</em>, wrote <dfn class="i.event" id="makuranososhi
">Makura no soshi</dfn> (The Pillow Book), a diverse collection of jottings and essays around <em class="ref.makuranososhi
i.dtstart
">996</em>.
これをXSLTで変換して、次のようなRDFicalを得ることができる(テスト版のXSLT)。
(例)
<i:Vevent rdf:nodeID="makuranososhi"> <i:summary>Makura no soshi</i:summary> <dc:creator>Sei Shonagon</dc:creatory> <i:dtstart rdf:parseType="Resource"> <i:date>996</i:date> </i:dtstart> </i:Vevent>
歴史的な出来事をiCalendarで単純に記述できるのか(特にi:dtstart
でいいのか)どうかという疑問はとりあえずおいて、こんな具合にすれば、ひとつの出来事に関してばらばらに記述された要素を、Vevent
の中にまとめることができる。ここからHEMLを生成するのは、難しくない。
(例)
<Event id="makuranososhi"> <EventLabelSet> <Label>Makura no soshi</Label> </EventLabelSet> <Chronology> <XMLSchemaGYear>996</XMLSchemaGYear> </Chronology> <Participants> <PersonWithRole> <Person id="seishonagon"> <NameSet> <Name> <NameElement ordinal="1">Sei Shonagon</NameElement> </Name> </NameSet> </Person> </PersonWithRole> </Participants> </Event>
面白いのは、こうやってHEMLに変換すると、HEMLプロジェクトサイトのツールを使って、SVGで年表を表示させたり、表を作成したりできることだ。まだまだ実験レベルに過ぎないが、マーク付けと変換の工夫次第でかなり面白いことができそう。
- HEML:歴史的イベントの記述 (2004-03-12)