ちょっとしたメモ

HEMLとRDFicalの実験

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で年表を表示させたり、表を作成したりできることだ。まだまだ実験レベルに過ぎないが、マーク付けと変換の工夫次第でかなり面白いことができそう。

関連メモ:
map - genre: cal. at