Serialisation formとしてのXMLとADL、2段階モデリング
Technical documentation
2012/04/02
元ネタは,"RugsOn":http://www.rugson.org/ から。
Starbacksのオーダーはいろんな飲み物メニューに様々なオプションを追加することができる。
価格やサイズ、そしてオプションについての情報を含めると、構造化したデータでやりとりをする必要がある。
Starbacksでカフェフラペチーノをオーダーしたとすると,オーダー情報は以下のようなXMLデータとして表記されるようなものになる。
<?xml version="1.0" encoding="UTF-8"?>
Grande
Coffee Frapecino
Sep 12, 2011
460
Shot
Extra whip
Hazelnut
Caramel sauce
Chocolate sauce
Chocolate chip
対応するW3Cスキーマはこうなるんじゃないかな。
<?xml version="1.0" encoding="UTF-8"?>
xs:complexType
xs:sequence
/xs:sequence
/xs:complexType
/xs:element
xs:complexType
xs:sequence
/xs:sequence
/xs:complexType
/xs:element
/xs:complexType
/xs:element
/xs:schema
このXMLスキーマをADLでarchetypeとして表現するとこうなる。
archetype
STARBUCKS-ORDER-CLUSTER.starbucks_order.v1
concept
[at0000] -- Starbucks coffee order
language
original_language = <[ISO_639-1::en]>
description
original_author = <
["name"] = <"Starbucks Coffee, ltd">
>
details = <
["en"] = <
language = <[ISO_639-1::en]>
purpose = <"To operate Starbucks orders">
use = <"Record Starbucks order">
misuse = <"Record McDonald order">
copyright = <"">
>
>
lifecycle_state = <"Draft">
other_contributors = <"">
definition
CLUSTER[at0000] matches {
items cardinality matches {1..*; unordered} matches {
ELEMENT[at0001]