- From: Yuzo Matsuzawa <yuzo@indigo.co.jp>
- Date: Thu, 29 Jan 2009 14:01:25 +0900
- To: W3C SVG IG Japan <public-svg-ig-jp@w3.org>
インディゴの松澤と申します。
# 過去議事で「インディゴ松田」となっているのが私かと思います
金曜日にあらためて自己紹介させていただきます。
また、ML の投稿のアクティベーションの都合で、
マルチポストになってしまうかもしれませんが、ご容赦ください
さて、これは過去に高木さんとも議論した内容なのですが、
SVG IG 向きの課題かと思いますので、展開いたします。
◇事の発端
7.15 Geographic coordinate systems
http://www.w3.org/TR/SVGMobile12/coords.html#GeographicCoordinates
CRS のサンプル事例 07_19.svg、07_20.svg、07_21.svg の
掲載されているセクションなのですが、
実はここで掲載されている 07_20.svg と 07_21.svg の中の RDF は、
RDF validator (http://www.w3.org/RDF/Validator/)をパスしません。
→ この二つは、そもそも RDF風に書かれていないので、以下では触れません
07_19.svg の中の RDF は、validator はパスするのですが、
その RDF グラフは何かおかしいのです。
◇何が問題か?
== 典型的な CRS のRDF ==
<svg...>
<metadata>
<rdf:Description rdf:about="#">
<crs:CoordinateReferenceSystem
rdf:resource="http://purl.org/crs/84"
svg:transform="matrix(a,b,c,d,e,f)"/>
</rdf:Description>
</metadata>
<g>...</g>
</svg>
このとき、この RDF は以下の2つのトリプルを構成します
> > 主語 : #
> > 述語 : crs:CoordinateReferenceSystem
> > 目的語: http://purl.org/crs/84
> > 主語 : http://purl.org/crs/84
> > 述語 : svg:transform
> > 目的語: matrix(a,b,c,d,e,f)
svg:transform="matrix(a,b,c,d,e,f)" というものは、
SVG ドキュメントの座標系に固有の値と考えるのが普通ですが、
RDF 的には、「http://purl.org/crs/84」という測地系のプロパティと
なっています。
このケースでは問題は深刻ではないですが、
以下のケースでは意味が消失します。
== 2つの CRS 定義を持つRDF ==
<?xml version="1.0"?>
<svg...>
<metadata...>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:crs="http://www.ogc.org/crs"
xmlns:svg="http://www.w3.org/svg">
<rdf:Description rdf:about="#canvas1">
<crs:CoordinateReferenceSystem
rdf:resource="http://purl.org/crs/84"
svg:transform="matrix(a1,b1,c1,d1,e1,f1)"/>
</rdf:Description>
<rdf:Description rdf:about="#canvas2">
<crs:CoordinateReferenceSystem
rdf:resource="http://purl.org/crs/84"
svg:transform="matrix(a2,b2,c2,d2,e2,f2)"/>
</rdf:Description>
</rdf:RDF>
</metadata>
<g xml:id="canvas1">...</g>
<g xml:id="canvas2">...</g>
</svg>
この例では、 SVG の中に複数の地理座標があると考えてください。
たとえば、天気予報のように、本土と沖縄がひとつの画面に収まっているが、
本土部分と沖縄部分は違う CRS を持つようなケースです。
また、地図本体は CRS の影響下におきたいが、凡例などは影響外におきたい、
といったケースなど、Fragment に対する CRS の設定は
具体的な利用シーンが考えられます。
この RDF を Validator にかけると、
> > 主語 : #canvas1
> > 述語 : crs:CoordinateReferenceSystem
> > 目的語: http://purl.org/crs/84
> > 主語 : #canvas2
> > 述語 : crs:CoordinateReferenceSystem
> > 目的語: http://purl.org/crs/84
> > 主語 : http://purl.org/crs/84
> > 述語 : svg:transform
> > 目的語: matrix(a1,b1,c1,d1,e1,f1)
> > 主語 : http://purl.org/crs/84
> > 述語 : svg:transform
> > 目的語: matrix(a2,b2,c2,d2,e2,f2)
という4つのトリプルができあがり、
もともとの #canvas1, #canvas2 から svg:transfom への関係性が消失、
http://purl.org/crs/84 が二つの svg:transform を持つ、というように
コンフリクトしたグラフが形成されていることがわかります。
◇問題提起
ここで挙げたように、現在 SVGTiny1.2(SVG1.1も含む) で紹介されている
CRS の記述方法は、RDF としてみた場合には問題があると考えています。
1. svg:transform を中心として、
RDF 的な文脈から周辺のクラス・語彙の定義を整理すべきでは
2. 非RDFの記法を考える場合にも、Fragment に対して複数の CRS を
設定できる方法を検討したい
以上です。
--
Yuzo Matsuzawa <yuzo@indigo.co.jp>
Received on Thursday, 29 January 2009 08:41:12 UTC