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)


