Presentation is loading. Please wait.

Presentation is loading. Please wait.

第1章 実世界のモデル化と形式化 3.地物インスタンスの表現

Similar presentations


Presentation on theme: "第1章 実世界のモデル化と形式化 3.地物インスタンスの表現"— Presentation transcript:

1 第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現 太田守重

2 ここで学ぶこと 一般地物モデルに従って応用スキーマを作成することができるが、応用スキーマは地物とその構造のモデルにはなっても、インスタンスの表現にはならない。インスタンスを記述するために、ここではXMLが使われる。XMLは拡張マーク付け言語と呼ばれ、自分自身の説明(タグ)を含む「自己記述型言語」である。  ここでは、この講義で使用する一般地物モデルに準拠した、インスタンス表現のための規則(インスタンスモデル)を紹介する。

3 XML (eXtended Markup Language)
マークアップでデータに意味付けし、構造化し、文書化するための規則 マークアップは < と > で区切るシンボルで、タグとよばれる。 データは内容 (content) ともよばれる。 例: <title>算法入門</title> タグで囲まれた情報の単位は要素とよばれる。UMLのクラスをXMLで表現するとき、クラスは要素になる。 例: <道路> </道路> ただし、タグの下に下位の要素が入らないときは、終了タグは省略し、   <道路・・・/> のように表記してもいい。  XMLはeXtended Markup Languageつまり、拡張マーク付け言語のことである。自己記述型のデータを表現するために使われる文法とも言われる。自己記述とは、データに自分自身の意味を付加して説明するという意味である。XMLの場合、その説明はタグと呼ばれる。また、データはタグで説明される内容、またはコンテントと言われる。スライドに示した例では、算法入門というコンテントは何かのタイトルであることが示されている。開始タグと終了タグで囲まれた情報単位のことは、要素と呼ばれる。例えば、「道路」というクラスのインスタンスはスライドに示すように、<道路>というタグで囲まれた要素である。  応用スキーマに従って作られるデータをXML表記することが多いが、それはインスタンスと呼ばれる。また一般的に、XMLの記法で表現されたデータはXML文書と言われる。 以後、この講義で使用するXML文書の記法について解説する。なお、インスタンスは静的なデータなので、「操作」は含まない。

4 基本データ型をとるクラス属性のXML表現
クラス図で基本データ型をもつ属性は、XMLの属性として表現する。XML属性は、開始タグの中で、属性名=”属性値” という形式で示す。 例: <Abc id=“p01” name=“木下奈保子” position=“課長”/> 属性の型が Sequence<基本データ型> の場合は、カンマで区切られた属性値の列で表現する。 例: <Abc id=“w10” name=“saito,tokuda,utsugi”/> Abc name: String position: String  XMLの記法では、要素は属性をもつことができる。この講義では、例えば、スライドの上の例のように、数字や文字列などの基本データ型をとる属性は、タグのなかでXML属性として表現する。また、クラスの属性が基本データ型をとる値の列の場合は、カンマで区切った属性値の列として表現する。クラスが複数の属性をもつ場合は、要素の開始タグの中に、複数の属性が現れることになる。なお、小要素をもたない要素では終了タグを省略することができる。  すでに述べたが、全てのクラスは、 「ルートクラス」という抽象クラスを継承していると考える。「ルートクラス」は識別子属性idをもつので、応用スキーマに現れる全ての地物クラスのインスタンスはidを保持することになる。なお、idの値は、地物インスタンス集合の中で一意でなければいけない。また、それ以外の符号規則は、ユーザ自身が考えることになる。       Abc name: Sequence<String> ・・・・・・・・・・・・・・・・・・・・

5 efg: Sequence<Book>
複合データ型をとるクラス属性のXML表現 複合データ型(クラス)をとる属性はXMLの下位要素とし、実際の要素をidrefで参照する。 例: <Abc id=“a01”> <efg idref=“bk01”/> </Abc> <Book id=“bk01” title=算法入門” publish=“ ”/> 属性の型が Sequence<複合データ型> の場合は、<sequence>…</sequence>の下位要素の列で属性値の列を表現する。 例: <Abc id=“a23”> <sequence> <efg idref=“bk01” /> ………… </sequence> Abc efg: Book Book title: String publish: Date クラスの属性が複合データ型(クラス)をとる場合は、下位の小要素として表現し、実際のインスタンスを参照する。また、属性の型が複合データ型をとる値の列になる場合は、<sequence>タグで囲んだ小要素の列を親要素の中に入れ、それぞれが、実際のインスタンスを参照する。 Abc efg: Sequence<Book>

6 関連の表現 他の要素への関連は、関連種類を示すタグ (association, aggregation, composition) で囲んで
<役割名 相手要素の参照/> で示す。 例: <Abc id=“f98”> <association> <kml idref=“h001”/> </association> </Instance> <Efg id=“h001” .... />  この講義では、他のクラスのインスタンス(要素)への関連は、関連の種類を示すタグで相手の要素の列を囲むことによって、示す。関連の種類は、 association aggregation composition のいずれかである。 Abc Efg kml

7 多重度をもつ関連 関連する要素の多重度が1以上の場合、関連種類を示すタグで囲んで <役割名 ・・・・/>の列が、その中に入る。
例:<Abc id=“sss”> <aggregation> <kml idref=“n02”/> <kml iderf=“n04”/> ・・・・・ </aggregation> </Instance> <Efg id=“n02” name=“Taro”/> <Efg id=“n04” name=“Hanako”/> 1..* Efg name: String Abc kml 関連する要素の多重度が1以上の場合、idrefの値はカンマで区切られたid値の列になる。

8 継承 上位のクラスを継承する場合は、継承するプロパティを全て含むため、上位のクラスを指定する。下位のクラスは複数になる可能性がある。
例:EfgがAbcを継承するとき、Efgには継承する属性を入れる。 <Abc id=“abc01” bcg=“o” kml=“p”/> <Efg id=“kk03” bcg=“o” kml=“p” pqr=“q” stu=“r”/> Abc bcg: * kml: * Efg pqr: * stu: * 上位のクラスを継承する場合は、継承するプロパティ(属性、関連、そして継承)を全て含む。継承も継承するとは、より上位のクラスのプロパティも継承するという意味である。 *: 任意のデータ型

9 地物インスタンスのXML表現 UMLクラス図 建物形状 id=“s001” 建物 名称:本郷ビル 名称:String 使用目的:商用、住居
    建物 名称:String 使用目的:Sequence<String> 床面積:Float 形状:曲面 名称:本郷ビル 使用目的:商用、住居 床面積:500 形状:形状データ “s001” 参照 <建物 id=“buil02” 名称=“本郷ビル” 使用目的=“商用,住居” 床面積=“500” > <形状 idref=“s001”/> </建物> ここでは、クラス図で示した地物(建物)の実例(本郷ビル)を含むインスタンス集合のXML文書を示す。インスタンス集合の識別子はis01, その名前は建物調査結果になっている。本郷ビルは、b001というidをもち、直接値として、名称、使用目的、床面積が表現されている。形状は空間属性(曲面)をとるので、そのidrefを保持している。 *)形状など、空間属性の具体的な表現法は「空間スキーマ」で学ぶ。

10 まとめ 地物インスタンスの表現には、XMLを使用することができる。
ここでは、UMLで記述された、一般地物モデルに従う応用スキーマに準拠するXML文書を作成するための規則を示した。

11 参考文献 有川正俊、太田守重監修(2007)『GISのためのモデリング入門』ソフトバンククリエイティブ
ISO, ISO 19118:2005 – Geographic Information - Encoding


Download ppt "第1章 実世界のモデル化と形式化 3.地物インスタンスの表現"

Similar presentations


Ads by Google