SVG Map形式の地図データにメタデータを埋め込みたいという要望があります。地図に意味情報(セマンティクス)を持たせ、その意味情報を用いた検索や解析などの処理をコンピュータで行うことが可能になるためです。 これらの処理は、一般にGISで行われている処理に相当します。
#もちろんGISの最も特徴的な処理は「図化」すなわち地図表現することなのは言うまでもありません
ここで、SVG Mapコンテンツへの埋め込まれるメタデータの意味としては、SVG Mapコンテンツのドキュメント全体に対するメタデータと、ドキュメント中の個々の図形要素に対するメタデータの二つが挙げられるでしょう。前者のメタデータの埋め込みは、RDF/XMLによって記述された情報を<svg>ルート要素直下に置かれた<metadata>要素に入れる という手法が、例えば地理的な座標参照系の記述方法などで採られています。
一方、後者のメタデータに関しては、W3C ESW Wiki:GeoMetadataOverSvgにあるように、前者と同様の方法(ただし、個々の図形要素を指定するためにxlinkを用いる。)に対して、図形要素に直接属性を埋め込むことによる、より簡易な方法は有効と考えられます。(なお、この方法はSVGの勧告仕様に違反していません)
この方法は、RDF/XMLの記法に準拠しておらず、複雑なデータ構造を直接記述できないものの、データ格納効率と作業性の面で優れています。データ格納効率に関しては端折ります(別途詳説予定)が、作業性に関して以下のメリットが指摘できます。
- 図形要素とメタデータが文書中で分離していないため、処理段階において分離した情報を結合する処理が不要
- 個々の図形要素に不特定のデータ構造(<metadata>子要素以下のメタデータ構造)が挿入されることを想定しなくて良いため、処理性能の最適化が容易
- テキストエディタなどの簡易な手段を用いて、直接埋め込まれたメタデータを元にして個々の図形にスタイルを設定することが可能(もちろんXSLTを用いることも可能)
また、microformatsや、GRDDLなど、近年このような簡易な方法でコンテンツにメタデータを埋め込む手法の有用性が認知されています。
以上の理由により、SVG Mapコンソーシアムでは、この簡易な方法によるメタデータの埋め込みをサポートすることにします。
個々の図形要素へのメタデータの埋め込み仕様
- 各図形要素に、メタデータを属性として付加することができる。
- 相当するRDFによるデータ構造は以下の通り
<図形要素名 id="ID" 属性="属性値" .../>
=
[ID]:(主語) -- 属性:(述語) --> [属性値]:(目的語)
なお、[ID]:(主語) -- rdf:type:(述語) --> [図形要素名]:(目的語)も同時に言明されるでしょう。 - 付加される属性は、それぞれSVGと異なるネームスペースを持ち、正しくネームスペースが宣言されている必要がある。
- ネームスペースを複数宣言することによって、複数の語彙に基づく属性を埋め込むこともできる。
- 属性値としてリテラル(文字列・数値など)とリソース(URL,URI)を用いることができる。値の制限は、ネームスペース宣言において指定されるスキーマ(RDF Schemaを想定)によって行われるものとする。
- カンマ","区切りを用いて、一種類の属性に複数の属性値を持たせることができる。
- 埋め込まれる図形要素には、id属性が付与されていることが好ましい。(付与されていない場合、RDFによるデータ構造では、匿名ノードとして扱われる)
記述例:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<path id="t1"
foaf:nick="おービル"
rdf:type="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"
dc:title="OOX商会ビル"
stroke="green" d="....." />
</svg>