IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  XML | SOA and Web services  >

スキーマにデータ・ディクショナリのリンクを使う

XMLノードの意味に関するアンカを配置する

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません


レベル: 中級

Uche Ogbuji (uche@ogbuji.net), Consultant, Fourthought, Inc.

2004年 5月 20日

XMLやWebサービスのスキーマを設計する際には、しばしば(そして理想的には)既存の標準で定義されているデータを再利用します。再利用する場合には、そうした標準に対するリンクを含んでおくと非常に有効であり、的確なデータ・ディクショナリの参照が提供できます。そうすることによって、処理や維持管理の自動化がより容易になります。このヒントでは、この試みについて説明します。

私の XML的思索 コラムでは、いかに様々な業界が意味的透過性(semantic transparency)に向かって努力しているかについて頻繁に焦点を当てています。意味的透過性は、少なくともXML文書で伝達されるものの枠組みに関して共有されることを意味しています。業界としては、すべての要素や属性、コンテンツの意味体系と共に完全な文書フォーマットを作成することによって共有を行うか、あるいは用語や概念を、そうした用語や概念が現れる文書とは無関係に独立して個別に定義することで共有を行います。私はこうした手法をそれぞれトップダウンボトムアップと呼んでいます。そして、非常に活発なコミュニティが、それぞれに対して有用な材料を提供しています。

自分専用の、あるいは公共用となるXMLスキーマを開発する場合にお決まりの助言は、既に行われていることをうかつに繰り返さないように・・・、ということです。しかし本当に新しい分野を扱うにせよ、あるいは既存の言語を単純に再利用しないことに対して充分な理由がある場合であっても、意味的透過性に向けた既存の動きに可能な限り近寄るように努力すべきです。これは私的な使い方のためのXMLフォーマットを開発する場合にも、共有または公開リソースとなるXMLフォーマットを開発する場合にも、最善の方向性だと言えます。そうすれば命名規約や、場合によるとスキーマの断片まで既存のボキャブラリから借用することができるのです。もう一つ、あまり一般的ではありませんが、他の人達の成果の上に構築する手法として、私がセマンティック・リンクと呼ぶリンク(スキーマの中で定義する構文的な構成子を定義する、既存の標準への特別なリンク)を自分のスキーマの中に取り入れる方法があります。これによって、とりわけ内容豊富なデータ・ディクショナリの形式をXMLスキーマに対して提供できるようになります。このヒントでは、こうしたリンクを自分のスキーマの中に取り入れる方法を紹介します。

具体的に、どんなサービスなのか?

まず皆さんが自分をあなたの組織のWebサービスを管理する情報システムに取組む開発者だと思ってください。最初の課題は、提案されたWebサービスを確実に軌道に乗せるために必要な予算要求の面から、そのサービスの詳細を記述した情報を集めることです。その情報に対する意見や報告書が容易に生成できるように、そして様々な分野からの情報を苦労せず統合的に取りまとめられるように、XMLを使うでしょう。リスト1は、この目的のために構築しうるRELAX NGスキーマの断片の一例です。


リスト1. Webサービス開発に関する予算情報のためのRELAX NGスキーマの一部
                
<element name='service'>
  <owl:sameClassAs
    resource="http://www.daml.org/services/owl-s/1.0/Service.owl#Service"/>
  <attribute name='id'/>
  <element name='synopsis'>
    <owl:samePropertyAs
      resource='http://www.w3.org/2000/01/rdf-schema#comment'/>
  </element>
  <element name='budget-request'>
    <attribute name='currency'/>
  </element>
  <element name='justification'/>
</element>

この断片には名前空間の宣言を含んでいませんが、owl接頭辞が、OWL Webオントロジ言語http://www.w3.org/2002/07/owl# に対する名前空間と結びついています。OWLは、意味に関する概念の集合を共有するのに充分な情報を提供するための文書であり、オントロジに関するW3Cの標準です。従ってOWLは、スキーマでセマンティック・リンクを表現するための素晴らしい手段なのです。各OWL要素は、その要素を包含しているRELAX NG定義のリンクを表現する注釈となっています。

OWL表現owl:sameClassAs は、XMLスキーマにある情報項目が、何らかのクラスを表現していることを宣言するために使われています。この例では、service という名前の要素型の意味するものが、SOAPまたはRESTなどといったWebサービスなのだ、と明確に分かることが重要です。そうすることで、WebサービスやSOA(サービス指向アーキテクチャ)の標準的なオントロジである、OWL-Sの概念定義に対してそれをしっかり結びつけるのです。場合によって要素は、クラスそのものであるよりも、別の要素の属性やプロパティであるかのように感じられるものです。この例のowl:samePropertyAs 表現は、synopsis要素をRDF schema (RDFS) におけるコメントと等価なものとして識別するために使われています(RDFSにおけるコメントは、通常の文章で「リソース記述を人に読める形で提供するために使われる」と定義されています)。この場合は、synopsisとはserviceを人に読める形で記述したものである、と正式に主張していることになります。

RELAX NGでは、外部名前空間のいかなる要素も定義内の任意の場所に配置することができるので、そうした注記を容易に追加できます。もしW3C XML Schema (WXS) を使っているのであれば、話はもっと複雑になります。外部要素はxsd:appinfo 内に配置する必要があり、それを今度はxsd:annotation 要素の中に配置しなければならないのです。




上に戻る


WS記述におけるセマンティック・リンク

さて皆さんはWebサービスの予算要求をとりまとめ、提示するために充分な注意を払ったので、無事承認がおりました。今度はそれを実装する番です。新しく予算化されたサービスの一つは予定表と予約のサービスなので、そのためにWSDLを書く必要があります。もちろんWSDLのスキーマ断片にセマンティック・リンクが含まれることを明確にする必要がありますが、その他にも同様に、その記述のあちこちにセマンティック・リンクを付加する必要があります。リスト2はWSDL 1.1に準拠した、そうしたWSDLの断片の一例です。


リスト2. メッセージ部分にセマンティック・リンクを含むWSDLの一部
                
<wsdl:message name="get-upcoming-appointments">
    <wsdl:part name="requested-duration" element="schema:duration">
      <wsdl:documentation>
        <owl:sameClassAs
          resource="http://www.w3.org/2002/12/cal/ical#duration"/>
      </wsdl:documentation>
    </wsdl:part>
  </wsdl:message>

現在から一定期間(duration)で予約を依頼するための要求メッセージを定義する際には、その要求におけるdurationというパラメータを定義する時に、そのパラメータが何を意味するのかについて精度を規定することになります。これは、公式なオントロジであるiCalendar標準(RFC 2445)に対してW3Cの提案した表現を参照することによって行います。このリンクをwsdl:documentation要素に配置するのですが、この要素は通常、人が読める形での文書化のために予約されているので、ここに配置するのは理想的ではありません。ここに配置するのは、WXSと同じように外部要素(「拡張性要素(extensibility element)」と呼ばれます)を配置する場所を制限するという、WSDL仕様の持つ制約からです。拡張性のモデルは、現在もWSDL 2.0で開発中です。私としては、ワーキング・グループが作業を終了する前に、不必要な制約を緩和して欲しいと思っています(メッセージ部分の概念が2.0で全面書き直しの最中だという事実には、今のところ目をつぶってください)。




上に戻る


まとめ

セマンティック・リンクを追加することによって、XMLやWebサービスのスキーマに使われる単純な用語(service、synopsis、duration)を解釈し、特定の文脈の中に配置しました。こうすることによって、こうした用語がシステムに展開された時に、その意味を自動的に推測することがずっと容易になり、対応したXML文書の情報価値を高めることにもなります。例えばこうしたセマンティック・リンクを使うことによって、synopsisという要素が、別のボキャブラリでdescriptionという名前の要素と同じ意味を持っている、ということが簡単に判定できます。プロのデータベース管理者達は、スキーマの中で使う用語を設定するためにデータ・ディクショナリの持つ重要性を強調しています。XML開発者達も同様であるべきでしょう。

もっと一般的には、スキーマやディクショナリ、オントロジなどに関する素材が、単純なURLを使って確実に参照できるようになることも、セマンティック・リンクをサポートすることによる価値と言えるでしょう。もし皆さんが意味的透過性に関して取組んでいるのであれば、単純なリンクによる容易なアクセスが目標の一つであることを忘れないでください。



参考文献

  • Web Ontology Working Group のホーム・ページで、OWL Webオントロジ言語について学んでください。OWLは、リソース記述のための汎用的なボキャブラリとして使用されるRDF Schema に基づいています。

  • Webサービスを使うのであれば、OWL-S を調べてみてください。OWL-Sは、WebサービスやSOA(サービス指向アーキテクチャ)のための非常に厳格なオントロジです。

  • RDF Calendar を調べてみてください。これは、iCalendar (RFC 2445) に基づきスケジュールや予定表の情報用オントロジとその枠組みを作成するために、W3Cが広範な取組みを行っているものです。

  • developerWorksのXMLゾーンSOA and Web servicesゾーン では、これら2つの人気の高い技術に関して、幅広い話題の記事やコラム、チュートリアル、ヒントなどを提供していますのでご覧ください。

  • developerWorksのDeveloper Bookstore には、XML関連の書籍が豊富に取り揃えられていますので、ぜひご覧ください。

  • XMLおよび関連技術においてIBM認証開発者になる方法についてはこちら を参照してください。


著者について

Uche photo

Uche Ogbuji氏は、Fourthought, Inc. のコンサルタント兼共同設立者です。この会社は、企業のナレッジ・マネジメントのためのXMLソリューションを専門とするソフトウェア・ベンダー兼コンサルタント会社です。Fourthoughtでは、XML、RDF、およびナレッジ・マネジメント・アプリケーション用のオープン・ソース・プラットフォームである4Suiteを開発しています。Ogbuji氏は、ナイジェリア出身のコンピューター・エンジニア兼ライターで、現在は、米国コロラド州ボールダーに住み、そこで働いています。Ogbuji氏の連絡先はuche.ogbuji@fourthought.com です。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ