XML の名前空間はどうしよう の続きといえば続き。名前空間命名にいつまでもモタモタしていたところでメリットは何もないので、さっさと中身を作ったりその準備に取り掛かったりすることにした。ので、いろいろと脳内仕様を決めてみたりする。した。決めてみた。
せっかくだから適度に汎用性を持って文書のリストを作れるものにしよう、とかいうことで、じゃそんな感じにぼちぼちとアレしますか(適当)。
要素名 | 定義 | 親要素 | 子要素 |
---|---|---|---|
※ 仕様は仮のものです。 | |||
list | 文書のリスト。ルートになる要素。document 要素を並べる。info 要素とか作ってリスト作成者の情報を入れた方が良さげなんだろうか。 | なし | document |
document | ひとつの文書を表す。Dublin Core の relation で関連する文書を表す、とか。 | list | title, category, sortNumber |
title | 文書の題名(≒ dc:title)。 | document | sortName |
author | 文書の著者。creator の方が適切?リソースはテキストに限るのなら author ですか。 | document | sortName, sortNumber |
category | 文書の分類(≒ dc:subject?)。 | document | categoryName, sortNumber |
categoryName | 文書の分類の項目名。category 周辺がいかにも間に合わせくさいので要検討。 | category | sortName |
sortName | 文書リストの並べ替えに使う名前。MusicBrainz の sortName に該当? | title, author, categoryName | なし |
sortNumber | 文書リストの並べ替えに使う番号。rdf:Seq を使えばいいのか。とりあえず。 | document, author, category | なし |
名前空間は こんな感じ で、一応経緯か(脳内)仕様かそんなものを置いてみることにする予定的な。プログラムのプの字もスクリプトのスの字も理解していないものだから、そういった利便性というものに対して一切配慮できていない(できない)のが非常に「それは何か意味があるのですか」的なことではあるのだけれど、何事もやってみてからというのが信条であるので、というのは今思い付いたのだけれど、まぁとりあえずやってみるかということであるので、やってみました。
さて、いろいろアレしますか。しますよ。
というか一番の問題は RDF/XML を理解していないことではなくて、XML に対する理解が浅いことか。RDF/XML構文の簡単な説明 熟読します。
とりあえずこんな感じに。
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dl="http://www.junkwork.net/xml/DocumentList#"
xmlns:dlsort="http://www.junkwork.net/xml/DocumentListSort#">
<dl:Document rdf:about="http://www.junkwork.net/stories/same/001">
<dl:title rdf:parseType="Resource">
<dc:title>別れ話</dc:title>
<dlsort:sortName>わかればなし</dlsort:sortName>
</dl:title>
<dl:author rdf:parseType="Resource">
<dc:creator>イソムラ</dc:creator>
<dlsort:sortName>いそむら</dlsort:sortName>
</dl:author>
<dl:category rdf:parseType="Resource">
<dlsort:categoryName>Same Old Story</dlsort:categoryName>
<dlsort:sortNumber>001</dlsort:sortNumber>
</dl:category>
</dl:Document>
</rdf:RDF>
要するにソート用にいくつか加えればそれでいいんじゃん的な結果に。
要素名 | 定義 | 親要素 | 子要素 |
---|---|---|---|
Dublin Core や FOAF による拡張必須。 | |||
Document | 文書一単位を表す要素。 | ルート | title, author, category |
title | 文書の名前を表す要素。 | Document | dc:title, sortName, sortNumber |
author | 文書作成者を表す要素。 | Document | dc:creator, sortName, sortNumber |
category | 文書の分類を表す要素。 | Document | categoryName, sortNumber |
categoryName | 分類の名称。 | category | なし |
sortName | 並べ替えに使用する名前。 | title, author | なし |
sortNumber | 並べ替えに使用する番号。 | title, author, category | なし |
title、author、category は rdf:parseType="Resource"(リソースパース型プロパティ要素)で並べ替え用の要素を子に持ちますよ、とか(もちろん並べ替え用の要素を使用しなければ、例えば author をリテラルプロパティ要素として表してしまうのであればこの限りではないけれども)。並べ替え用の要素は 別の名前空間 を宣言してそっちへ放り込みました、と。より希薄な仕様が二つ生まれた、とかそういうことですよ。ね。しかも並べ替え用の名前空間が主目的であって(以下略)
<rdf:Description rdf:about="http://www.junkwork.net/stories/same/001">
<dc:title>別れ話</dc:title>
<dl:sortName>わかればなし</dl:sortName>
<dl:categoryName>Same Old Story</dl:categoryName>
<dl:sortNumber>001</dl:sortNumber>
<dc:date>2001-01-30</dc:date>
<dc:identifier>http://www.junkwork.net/stories/same/001</dc:identifier&
gt;
</rdf:Description>
試しにリストを作成してみたら(物凄い適当に作成したにも関わらず) 120KB 超とかいうアホみたいなファイルができあがって、しかも XSLT での変換がやたらと面倒くさくなったものだから、ソート用の要素以外はもうこんな感じでいいやなんて具合に削ったらむしろこっちの方が良かった。
つまりどういうことかって、自分が何をしたくて何をしているのかよく考えろということだった。ソート用の要素があればそれだけで満足だったんだな。くっそう。