(57)【要約】  ＸＭＬ文書の、意味論を意識した処理は、異なる名前を有するが意味論的に同等である要素を、照会およびスキーマ検証などの要素名に依存した動作を実行する際に、同じ要素として扱う。当該意味論を意識した処理は、意味論的に同等の名前のセットの各要素名を「正規のタグ名」にマップするマッピングに基づいている。
2009544102.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実現されるステップを含む方法であって、前記コンピュータによって実現されるステップは、
正規のタグ名を、第１のノードの第１の名前と、前記第１の名前とは異なる第２のノードの第２の名前とにマップする意味論的マッピングを格納するステップを含み、ＸＭＬ文書の集合は前記第１のノードおよび前記第２のノードを含み、前記コンピュータによって実現されるステップはさらに、
前記意味論的マッピングに基づき、前記第１の名前および第２の名前を同一の名前として扱うことによりタグ名オペレーションを実行するステップを含む、方法。
【請求項２】
前記タグ名オペレーションは、前記ＸＭＬ文書の集合に対して発行されたクエリのコンピュータ処理である、請求項１に記載の方法。
【請求項３】
前記タグ名オペレーションはスキーマ検証を含む、請求項１に記載の方法。
【請求項４】
前記タグ名オペレーションは、前記ＸＭＬ文書の集合へのアクセスを管理するレポジトリによって実行される、請求項１に記載の方法。
【請求項５】
前記コンピュータによって実現されるステップは、前記意味論的マッピングを表わすデータを登録する要求を受信するステップと、
前記要求に応答して、前記データを前記意味論的マッピングとして登録するステップとをさらに含む、請求項４に記載の方法。
【請求項６】
コンピュータによって実現されるステップを含む方法であって、前記コンピュータによって実現されるステップは、
ＸＭＬ文書の集合における複数のノードの各ノードについて、
意味論的マッピングに基づいて意味論的経路ＩＤを生成するステップを含み、
前記複数のノードは第１のノードおよび第２のノードを含み、
第１の名前は前記第１のノードまたは前記第１のノードの先祖ノードに関連付けられており、
第２の名前は前記第２のノードまたは前記第２のノードの先祖に関連付けられており、
前記意味論的マッピングは、正規のタグ名を前記第１の名前および前記第２の名前にマップし、
前記第１のノードおよび前記第２のノードのために生成された意味論的経路ＩＤは同一である、方法。
【請求項７】
前記各ノードのための意味論的経路ＩＤは、前記各ノードの経路におけるノードの各々の名前についてのコードを含み、
前記第１の名前についてのコードおよび前記第２の名前についてのコードは同じである、請求項６に記載の方法。
【請求項８】
前記コンピュータによって実現されるステップはさらに、
前記複数のノードのために生成される意味論的経路ＩＤによって前記複数のノードに索引付けするインデックスを作成するステップを含む、請求項６に記載の方法。
【請求項９】
前記ＸＭＬ文書の集合はデータベースサーバによって管理され、前記コンピュータによって実現されるステップはさらに、
ＸＭＬ文書の集合に対して発行されたクエリを受信するステップを含み、前記クエリは経路を指定し、前記コンピュータによって実現されるステップはさらに、
前記経路に基づいて、データベースサーバが前記インデックスにアクセスするよう前記クエリを書換えるステップを含む、請求項６に記載の方法。
【請求項１０】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項１に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１１】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項２に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１２】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項３に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１３】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項４に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１４】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項５に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１５】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項６に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１６】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項７に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１７】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項８に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１８】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項９に記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１９】
ＸＭＬ文書の集合における複数のノードのインデックスを記憶するコンピュータ読取可能媒体であって、
前記複数のノードの各ノードは、前記各ノードを含む或る経路に関連付けられており、
前記インデックスの各エントリは、前記複数のノードの特定のノードに対応し、前記特定のノードの或る経路を表わす意味論的経路ＩＤに前記ノードを関連付け、
前記複数のノードは第１のノードおよび第２のノードを含み、
第１の名前は、前記第１のノードまたは前記第１のノードの先祖ノードに関連付けられており、
第２の名前は、前記第２のノードまたは前記第２のノードの先祖ノードに関連付けられており、
前記第１のノードおよび前記第２のノードについてのそれぞれの意味論的経路ＩＤは同
一である、コンピュータ読取可能媒体。
【請求項２０】
前記各ノードについての意味論的経路ＩＤは、前記各ノードの経路におけるノードの各々の名前についてのコードを含み、
前記第１の名前および前記第２の名前についてのそれぞれのコードは同じである、請求項１０に記載のコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は、２００４年７月２日に出願されたシバサンカラン・チャンドラセカラン（Sivasankaran Chandrasekaran）による「ＸＭＬデータにアクセスするためのインデックス（Index For Accessing XML Data）」と題された米国出願連続番号第１０／８８４，３１１号に関し、その内容の全体があらゆる目的で引用によりこの明細書中に援用されている。
【０００２】
発明の分野
この発明はＸＭＬデータの処理に関する。
【背景技術】
【０００３】
背景
拡張マークアップ言語（ＸＭＬ）はデータおよび文書についての規格であり、コンピュータ業界で広く受入れられている。ＸＭＬは、この明細書中でＸＭＬ文書またはそのフラグメントと称されるファイルまたはデータパケットなどのデータの塊に構造を与え、当該構造を記述する。ＸＭＬ規格により、ＸＭＬ要素と称されるＸＭＬエンティティの区域の範囲を定めるタグが提供される。各々のＸＭＬ要素は、属性と称される１つ以上の名前−値の対を含み得る。ＸＭＬを説明するために以下のＸＭＬフラグメントＡが与えられる。
【０００４】
フラグメントＦＡ
【０００５】
【数１】
2009544102.tif 000003
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＸＭＬ要素は、開始タグおよび対応する終了タグによって範囲が定められる。たとえば、セグメントＡは、要素の範囲を定めるための開始タグ＜Author＞および終了タグ＜/Author＞を含む。要素間のデータは要素の内容と称される。この要素の場合、要素の内容はテキストデータMark Berryとなる。
【０００７】
要素は、この明細書中においてはその要素名で言及される。たとえば、開始タグ＜publication＞および終了タグ＜/publication＞によって範囲が定められる要素はpublicationと称される。
【０００８】
要素内容は、属性および他の要素を含む他のさまざまな種類のデータを含み得る。要素bookは、１つ以上の要素を含む要素の一例である。具体的には、bookは、publicationおよびauthorという２つの要素を含む。別の要素に含まれる要素は、その要素の子孫と称される。このため、要素publicationおよびauthorは要素bookの子孫となる。要素の属性は
、その要素が含むものと見なされてもよい。
【０００９】
属性および子孫要素を含む要素を規定することにより、ＸＭＬ文書は、要素とその子孫要素とその属性との間の階層ツリー関係を規定する。このような階層ツリー関係を有する要素の如何なるセットも、この明細書中ではＸＭＬ文書またはフラグメントと称される。
【００１０】
ノードツリーモデル
ＸＭＬについての重要な規格は、XQuery1.0およびXPath2.0データモデルである（引用によりこの明細書中に援用されるＷ３Ｃ作業草案（２００４年７月９日）を参照されたい）。このモデルの一局面は、ＸＭＬ文書が、当該ＸＭＬ文書の階層の性質を反映したノードの階層によって表わされることである。ノードの階層は複数のレベルのノードで構成される。各レベルのノードは各々が、異なるレベルにおける１つ以上のノードにリンクされている。最上のレベルよりも低いレベルにある各ノードは、上方のレベルにおける親ノードのうち１つ以上のノードの子ノードとなる。同じレベルにあるノードは兄弟ノードとなる。ツリー階層またはノードツリーにおいては、各々の子ノードは親ノードを１つしか持たないが、親ノードは子ノードを複数有していてもよい。ツリー階層においては、親ノードがリンクされていないノードは根ノードとなり、子ノードがリンクされていないノードは葉ノードとなる。ツリー階層は単一の根ノードを有する。
【００１１】
ＸＭＬ文書を表わすノードツリーにおいては、ノードは、要素に対応し得る。当該ノードの子ノードは、当該要素に含まれる属性または別の要素に対応する。
【００１２】
ノードは名前に関連付けられてもよい。たとえば、要素bookを表わすノードの名前はbookとなる。属性publisherを表わすノードの場合、ノードの名前はpublisherとなる。
【００１３】
表現を簡便にするために、ＸＭＬ文書の他の部分および要素は、文書を表わすノードのツリー内のノードと見なされる。このため、名前bookを有するノードの値を「My book」と称することは、ノードbookに関連付けられる要素の値がMy bookであることを表わすのに簡便な方法となる。要素、属性またはノードの名前はまた、この明細書中においてはタグ名と称される。
【００１４】
ＸＭＬ文書におけるノードのための経路は、一連の親−子リンクを反映しており、ＸＭＬ文書におけるノードから始まって、階層をさらに下って特定のノードに到達する。たとえば、ＸＭＬ文書の根からノードpublicationまでの経路は、「/book/publication」となる。
【００１５】
同じ意味論についてのタグ名の普及
ＸＭＬの人気が高い１つの理由として、テキストを含むタグ名が記述的に使用可能であり、このため、要素および属性の意味を伝えるのに使用可能であることが挙げられる。たとえば、要素＜address＞は、アドレスを表わすデータを格納するのに用いられる。
【００１６】
しかしながら、タグ名は、しばしば、特定のアプリケーションまたはプロジェクトを実現する独立した個体またはグループによって作成される。このため、同じ意味が、最終的に、異なるＸＭＬ文書内の異なるタグ名で表わされてしまう可能性がある。規格委員会または業界共同事業体からいくつかのＸＭＬ語彙が出てきているが、これらは、使用されているＸＭＬタグ名全体のうちほんのわずかの部分を占めているに過ぎない。タグ名の普及は続いており、同様の意味または同じ意味を示す多くの異なるタグ名が場当たり的に作成されている。この問題は、同じ企業内のグループ間や異なる企業間で発生している。
【００１７】
たとえば、アドレス値は、１つのＸＭＬ文書内における要素＜Address＞によって表わ
され得るが、別の文書における異なる要素＜Addr＞によって表わされてもよい。さらに、これらのタグは異なる名前空間を用いていてもよい。たとえば、企業Ｃ１が＜c1:Address＞を用い得るのに対して、企業Ｃ２は＜c2:Address＞を用いる。ＸＭＬの観点から見ると、これらの企業が規定するこれらのタグおよび要素は異なっており、異なる物を意味するものと想定される。
【００１８】
互いに異なっているが意味論的に同一のものとして扱われる可能性のあるタグ名のセットは、この明細書中においては、意味論的に同等である異種のタグ名と称される。上述の例においては、＜Address＞、＜Addr＞、＜c1:Address＞および＜c2:Address＞は意味論的に同等である異種のタグ名を有する。
【００１９】
レポジトリ内のタグ名の普及
異なる語彙（すなわち、タグ名のセット）に基づいたＸＭＬ文書が最終的に（ＸＭＬデータベースなどの）単一のレポジトリに行き着く場合の多くのシナリオが存在する。これは、データ統合、ウェブサービスおよび内容ルーティングに共通している。このような場合、レポジトリにおけるＸＭＬ文書の集合にわたってクエリを作成することが非常に困難になる。上述の例においては、文書にわたってアドレスをチェックするためのクエリは、異なる文書における意味論的に同等の要素にアクセスするために異なるタグ名を用いる複雑なクエリを必要とする。
【００２０】
このようなクエリの実現可能な公式は、以下のとおりである。
【００２１】
【数２】
2009544102.tif 000004
【００２２】
明らかに、使用されるXPath式の複雑度が増し、意味論的に同等のタグ名の数がＸＭＬ集合の範囲内で増加すると、上述の方策が実行不可能となる。クエリの複雑さに加えて、このようなクエリは性能が低下してしまう。この欠点は、XPath、XQueryおよびＸＳＬＴなどのＸＭＬについての標準的なクエリおよび変換言語すべてが被る。
【００２３】
非葉ノードについてのタグ名の普及は、タグ名の普及についての問題を悪化させてしまう。先祖ノードの子孫が同じタグ名を有しているが、先祖が意味論的に同等であるが異なる名前を有している場合、異なる経路列は子孫と称される必要がある。たとえば、ＸＭＬ文書のいくつかのセットは、発行者およびそのアドレスを表わす要素を含む。しかしながら、１つのサブセットにおいて要素＜publisher＞が用いられ、別のサブセットにおいて要素＜publishing company＞が用いられる。これらはともに子孫要素＜address＞、＜city＞および＜zip＞を含む。これら両方のサブセットについては、意味論的に同等の子孫要素を表わすのに同じタグ名が用いられるが、サブセット間においては、子孫要素を識別するのに異なるXPath列が用いられなければならない。たとえば、要素＜address＞を参照するために、１つのサブセットにおいてはXPath列/publisher/address/が用いられ、他方のサブセットにおいてはXPath列/publishing company/address/が用いられる。
【００２４】
タグ名の普及に対処する別の方策として、同じ意味に対して同じタグ名を用いるようすべての文書を正規化することが挙げられる。たとえば、ＸＭＬ文書の集合の範囲内で、意
味論的に同等のすべてのアドレス要素を＜Address＞に変更する。すると、ＸＭＬの集合を有するアドレス要素にアクセスするクエリは、１つのタグ名を参照するだけで済む。この方策についての主な不利点は、元の文書の忠実性が保全されないことである。
【００２５】
上述に基づき、タグ名の普及に対処する方法の改善が必要とされる。
この節に記載される方策は、追求可能な方策であるが、必ずしも以前に想到または追及された方策である必要はない。したがって、特に指定のない限り、この段落に記載される方策はいずれも、単にこの段落における記載によって先行技術と見なされるものと想定されるべきではない。
【００２６】
この発明は、同様の参照番号が同様の要素を指す添付の図面において、限定的ではなく例示的に図示される。
【図面の簡単な説明】
【００２７】
【図１】この発明の実施例に従った意味論的経路ＩＤに基づいたＸＭＬインデックスを示す図である。
【図２】この発明の実施例に従ったクエリの、意味論を意識した書換えを示す図である。
【図３】この発明の実施例において用いられ得るコンピュータシステムを示す図である。
【発明を実施するための形態】
【００２８】
詳細な説明
以下の記載においては、この発明を完全に理解できるようにするために、説明の目的で、多数の具体的な詳細が提供される。しかしながら、これらの具体的な詳細なしにこの発明が実施可能であることが明らかとなるだろう。他の例においては、周知の構造および装置は、この発明を不必要に曖昧にすることを避けるために、ブロック図の形で示される。
【００２９】
概要
この明細書中に記載される方策により、「タグ名オペレーション」を実行する際に意味論的に同等である異種のタグを同じタグ名として扱うことが可能となる。タグ名オペレーションは、ノードのタグ名に依存するオペレーションである。タグ名オペレーションの例には、クエリＱＡなどのXPath列を用いてＸＭＬデータを参照するクエリのコンピュータ処理が含まれる。タグ名オペレーションの別の例としてスキーマ検証があり、ＸＭＬ文書がＸＭＬスキーマに適合するかどうかが判断される。
【００３０】
当該方策は、意味論的に同等のタグ名のセットの各タグ名を「正規のタグ名」にマップするマッピングに基づいている。意味論的に同等のタグ名は、個々に、正規のタグ名の同義語および互いの同義語と見なされる。タグ名オペレーションは、同義語が、当該同義語がマップされている正規のタグ名と同一であるかのように実行される。この態様でタグ名オペレーションを実行することを、この明細書中では、意味論を意識した処理と称する。
【００３１】
たとえば、ＸＭＬ文書の集合は、以下の意味論的に同等のアドレスタグ名のセット、すなわち、Address、Addr、c1:Addressおよびc2:Addressを含む。
【００３２】
以下のＸＭＬフラグメントＸＡは、これらの意味論的に同等のアドレスタグ名を正規のタグ名Addressにマップする。
【００３３】
フラグメントＸＡ
【００３４】
【数３】
2009544102.tif 000005
【００３５】
以下のクエリＱＢをコンピュータ処理すると、
【００３６】
【数４】
2009544102.tif 000006
【００３７】
となり、以下の経路によって識別される要素は、以下の経路内にあるものとして扱われる。
【００３８】
クエリＱＢにおいて指定される/PurchaseOrder/Address
/PurchaseOrder/Address、
/PurchaseOrder/Addr、
/PurchaseOrder/c1:Address、および、
/PurchaseOrder/c2:Address。
【００３９】
同義語を正規のタグ名にマップするマッピングは、この明細書中では意味論的マッピングと称される。意味論的マッピングを表わす一方法の例として、ＸＭＬ文書またはフラグメントＡなどのフラグメントの使用が挙げられる。この発明は、同義語マッピングを表わす特定の如何なる方法にも限定されない。
【００４０】
この発明の一実施例に従うと、タグ名オペレーションの、意味論を意識した処理は、ＸＭＬレポジトリによって実行される。ＸＭＬレポジトリは、この用語がこの明細書中で用いられる場合、ＸＭＬ文書へのアクセスを格納および管理するコンピュータシステムを指す。具体的には、レポジトリは、統合ソフトウェア構成要素とメモリ、ディスクストレージ、コンピュータなどの計算リソースの割当との組合せであり、プロセッサ上で統合ソフトウェア構成要素を実行するためにノード上で処理を行なう。ソフトウェアと計算リソースとの組合せは、ＸＭＬ文書の保存およびＸＭＬ文書へのアクセスの管理を専用とする。典型的には、レポジトリは、ＸＭＬ文書にアクセスするかまたはＸＭＬ文書を処理するようクエリを発行するクライアントの代わりに、ＸＭＬ文書を保存しかつＸＭＬ文書にアクセスするのに用いられる。レポジトリによって処理されるクエリは、ＸＭＬクエリ言語（「XQuery」）およびＸＭＬ経路言語（「XPath」）などのＸＭＬ規格に準拠する。XPathは、この明細書中において引用により援用されているＸＭＬ経路言語（XML Path Language）（XPath）、バージョン１．０（Ｗ３Ｃ推奨（W3C Recommendation）（１９９９年１１月１６日））に記載されている。XPath2.0およびXQuery1.0は、この明細書中において引用により援用されているXQuery1.0およびXPath2.0（Ｗ３Ｃ候補推奨（W3C Candidate Recommendation）（２００５年１１月３日））に記載されている。
【００４１】
経路ＩＤおよびインデックス
この発明の実施例に従うと、ＸＭＬレポジトリは意味論的経路ＩＤインデックスを用い
る。経路ＩＤは、ＸＭＬ文書内におけるノード間の経路のための識別子である。ＸＭＬ文書におけるノードのための経路は、一連の親−子リンクを反映しており、ＸＭＬ文書におけるノードから始まって、階層をさらに下って特定のノードに到達する。経路は、しばしば、経路におけるノードの名前の連続を表わす列である経路式によって表わされる。たとえば、ＸＭＬ文書Ｄ２の根からノードPublicationまでの経路は、経路式「/Book/Publication」によって表わされる。
【００４２】
ノードの名前は非常に長くてもよい。経路式の長さを短縮し、経路式を記憶するのに必要なストレージの量を減らすために、名前に基づいた経路式の代わりに経路ＩＤを用いてもよい。
【００４３】
経路ＩＤは、ノード名の代わりに用いられるノードＩＤコードからなる。経路ＩＤにおいては、名前に基づいた経路式の対応する各ノード名のためのノードコードが存在する。
【００４４】
説明のために、２つのＸＭＬ文書について考察する。
文書Ｄ１
【００４５】
【数５】
2009544102.tif 000007
【００４６】
文書Ｄ２
【００４７】
【数６】
2009544102.tif 000008
【００４８】
ノードＩＤコード１２、２３および２４は、それぞれノードPurchaseOrder、AddrおよびAddressに割当てられる。このため、経路「/Purchase Order/Addr」についての経路ＩＤは「/12/23」となり、「/Purchase Order/Address」についての経路ＩＤは「/12/24」となる。さらに、経路ＩＤはそれ自体が、経路全体のためにより短い識別子を割当てる、すなわち「/12/23」に対して４２、「/12/24」に対して４３を割当てる別個のシステム経路ＩＤテーブルに記憶されてもよい。
【００４９】
経路ＩＤは、経路ＩＤによってＸＭＬ文書の集合におけるノードに索引付けするインデックスを生成するのに用いられてもよい。経路ＩＤが用いる記憶空間が少ないので、経路ＩＤは、全ノード名に基づいたインデックス経路式のストレージのオーバーヘッドを発生させることなく、それらの経路に基づいて索引付けすべきノードに索引付けする。「ＸＭ
Ｌデータにアクセスするためのインデックス」には、経路テーブルおよび第２のインデックスを含むインデックスの例が記載される。
【００５０】
意味論的経路ＩＤ
意味論的経路ＩＤは、経路式の意味論的な等価に基づいて生成される経路ＩＤである。所与の経路式のために、その意味論的に同等の名前ベースの経路式は、その同義語の代わりに正規のタグ名を含む。同義語マッピングを用いて、同義語をどの正規のタグ名にマップするかを決定する。意味論的経路ＩＤは、意味論的に同等の経路式のノードＩＤコードに基づいており、正規のタグ名のノードＩＤコードが、正規のタグ名の同義語のノードＩＤコードの代わりに用いられる。たとえば、正規のタグ名ADDRESSのノードＩＤコードは２５である。このため、経路「/Purchase Order/Addr」についての意味論的経路ＩＤは「/12/25」となり、「/Purchase Order/Address」についても「/12/25」となる。
【００５１】
経路ＩＤと同様に、インデックスは、ノードの意味論的経路ＩＤによってＸＭＬ文書の集合におけるノードに索引付けしてもよい。このようなインデックスは、この明細書中では意味論を意識したインデックスと称される。意味論的に同等の経路を有するノードは同じ意味論的経路ＩＤに索引付けされ、意味論的インデックスの局面は、意味論的に同等である異種の名前をもったノードからのＸＭＬデータのクエリおよび検索を最適化するのに用いることができる。これを如何に実現し得るかについては、ＸＭＬ文書の保存およびＸＭＬ文書への照会のために構成および／または向上されるオブジェクト／リレーショナルデータベースサーバを含むＸＭＬレポジトリの文脈内において説明される。
【００５２】
レポジトリ／データベースサーバ上のＸＭＬストレージ
一実施例に従うと、ＸＭＬレポジトリは、ＸＭＬ文書の保存およびＸＭＬ文書への照会のために構成および／または向上されたオブジェクト／リレーショナルデータベースサーバからなる。このようなデータベースサーバにおいては、ＸＭＬ文書はテーブルの行に保存されてもよく、ＸＭＬ文書のノードは、その行における別個の列に格納される。ＸＭＬ文書全体またはそのフラグメントはまた、列におけるlob（ラージオブジェクト）に保存されてもよい。ＸＭＬ文書はまた、データベースにおけるオブジェクトの階層として保存されてもよく、各オブジェクトは、オブジェクトクラスのインスタンスであり、ＸＭＬ文書の１つ以上の要素を格納する。オブジェクトクラスは、たとえば、要素に対応する構造を規定し、要素の直近の子孫を表わすオブジェクトに対するポインタまたは基準を含む。ＸＭＬ値を保持するデータベースシステムのテーブルおよび／またはオブジェクトは、この明細書中においてはベーステーブルまたはオブジェクトと称される。
【００５３】
オブジェクト・リレーショナルデータベースサーバは、少なくとも部分的にＸＭＬ規格、たとえばXQuery/XPath、および他の規格、たとえばＸＱＬ／ＸＭＬ規格（この明細書中において引用により援用されているＩＮＣＩＴＳ／ＩＳＯ／ＩＥＣ  ９０７５−１４：２００３を参照されたい）に準拠するクエリを実行する。
【００５４】
説明のために、この発明の実施例を、ＸＭＬ文書の保存およびＸＭＬ文書への照会のために構成および／または向上されたオブジェクト／リレーショナルデータベースサーバを含むデータベースサーバの形態であるレポジトリを参照し、そして、ＸＭＬデータを格納するためにこのようなデータベースサーバによって用いられるベースデータ構造を参照して説明することとする。しかしながら、この発明の実施例はこのようなレポジトリには限定されない。
【００５５】
インデックス
一実施例に従うと、データベースサーバは、ＸＭＬ文書の集合に索引付けする「論理インデックス」を維持する。論理インデックスは、１つ以上のＸＭＬ文書のセットなどの別
のデータの塊へのアクセスのために協働的に用いられる複数の構造を含み得る。この発明の実施例に従うと、論理インデックスは、この明細書中においてＸＭＬインデックスと称されており、経路テーブルを含む。当該経路テーブルは、ＸＭＬ文書の集合におけるノードの階層についての情報を含んでおり、ノードの値を含んでいてもよい。論理インデックスは、経路テーブルに索引付けする順序付けされたインデックスを含む他のインデックスを含み得る。順序付けされたインデックスは、インデックスキーに基づいて順序付けされたエントリを含む。
【００５６】
図１は、一実施例に従ったＸＭＬインデックスの経路テーブル１０２を示す。経路テーブルは、ＸＭＬ文書の集合についての階層情報を含む。経路テーブル１０２を、文書Ｄ１およびＤ２を参照して説明する。
【００５７】
経路テーブル１０２は、列ＲＩＤ、ＬＯＣＡＴＯＲ（ロケータ）、ＶＡＬＵＥ（値）、ＯＲＤＥＲＫＥＹ、ＰＡＴＨＩＤ（経路ＩＤ）およびＳＥＭＡＮＴＩＣ  ＰＡＴＨＩＤ（意味論的経路ＩＤ）を含む。経路テーブル１０２における行は各々、文書Ｄ１およびＤ２を含むＸＭＬ文書の集合におけるノードに対応する。列ＲＩＤは行の行ＩＤを含む。経路テーブル１０２における特定の行のノードに関して、行ＩＤは、ノードを含むベーステーブルにおける行を識別する。経路テーブル１０２のエントリの１つのセットが、ＬＯＢ列における文書Ｄ１のノードを保持する行Ｒ１を識別する。エントリ１０３は、文書Ｄ１におけるノード/Purchase Order/Addrに対応する。経路テーブル１０２のエントリの別のセットが、文書Ｄ２のノードを含む行Ｒ２を識別する。エントリ１０４は、文書Ｄ１におけるノード/Purchase Order/Addressに対応する。
【００５８】
列ＬＯＣＡＴＯＲ（ロケータ）は、ＸＭＬ文書のデータ表現の範囲内におけるノードの位置を示す値であるノードロケータを含む。たとえば、ＸＭＬ文書を表わすテキストのストリームに関して、ノードロケータは、テキストのストリーム内における、ノードを表わすテキストの開始バイト位置を表わす値であり得る。別の例として、関連するオブジェクトのセットはＸＭＬ文書のノードを表わし得る。ノードロケータは、ノードを表わすオブジェクトに対する基準であってもよい。
【００５９】
列ＶＡＬＵＥ（値）はノードの値を含む。代替的には、経路テーブルはノードの値を保持する列を省いてもよい。これらの値は、ノードロケータによって識別される位置から検索することによって得ることができる。
【００６０】
列ＰＡＴＨＩＤ（経路ＩＤ）は経路ＩＤを保持する。エントリおよびそのそれぞれのノードに関して、経路ＩＤの列は、ノードの経路ＩＤを保持する。ノード/Purchase Order/Addrのエントリに関して、経路ＩＤは値「12/23」を保持する。/Purchase Order/Addressのエントリに関して、経路ＩＤは値「/12/24」を保持する。
【００６１】
列ＳＥＭＡＮＴＩＣ  ＰＡＴＨＩＤ（意味論的経路ＩＤ）は意味論的経路ＩＤを保持する。エントリおよびそのそれぞれのノードに関して、ＳＥＭＡＮＴＩＣ  ＰＡＴＨＩＤはノードの意味論的経路ＩＤを保持する。/Purchase Order/Addrおよび/Purchase Order/Addrが意味論的に同等の経路を有しているので、列ＳＥＭＡＮＴＩＣ  ＰＡＴＨＩＤにおけるそれぞれの意味論的経路ＩＤは、同一の「12/25」となる。
【００６２】
タグ名オペレーションについての意味論的マッピングの登録
ユーザは、ＸＭＬ文書の集合についての意味論的マッピングをレポジトリに登録して、登録された意味論的マッピングに従って、意味論を意識した態様で、ＸＭＬ文書上でレポジトリにタグ名オペレーションを実行させる。一実施例に従うと、登録は、意味論を意識したインデックスを作成するプロセス中に行なわれる。たとえば、意味論的インデックス
を作成するために、ユーザは、ＸＭＬ文書の集合についてのＸＭＬインデックスを作成するようデータベースサーバにＤＤＬ（「データ定義言語」）コマンドを発行する。当該コマンドは、データベースサーバによって保存され意味論的マッピングを表わすＸＭＬ文書を参照する。コマンドの受信に応じて、データベースサーバはコマンドを実行して、登録された意味論的マッピングに基づいて意味論を意識したインデックスを作成する。次いで、データベースサーバは、意味論的マッピングに基づいて、かつ意味論的マッピングに従ってタグ名前オペレーションを実行する。意味論を意識したインデックスによって索引付けされたＸＭＬの集合に文書が追加されると、インデックスは意味論的マッピングに従って維持される。
【００６３】
クエリについての意味論を意識した書換え
図２は、クエリが意味論を意識した態様でコンピュータ処理されるようにデータベースサーバがクエリＱＰを書換えるクエリ書換え動作を示す。
【００６４】
クエリＱＰは、ＸＭＬ文書Ｄ１およびＤ２を含むＸＭＬ文書の集合に対してユーザによって発行される。クエリＱＰは、クエリＱＰが意味論を意識した方法で評価されるべきであることを指定するパラメータ値「ＳＥＭＡＴＩＣ＿ＡＷＡＲＥ」を有するextractvalue関数を含む。クエリのコンピュータ処理などの意味論を意識した処理は、さまざまな方法で指示可能であり、この発明は、特定の如何なる方法にも限定されない。意味論を意識した処理ではシステムが広範囲に指定され得る。たとえば、ユーザは、ＸＭＬ文書の集合に対して発行されたすべてのクエリが意味論を意識した処理を受けなければならないことを指定し得る。意味論を意識した処理は、たとえば、クライアントがデータベースサーバでセッションを確立することによって、または、クエリＱＰによって示されるように、明確なクエリパラメータによってセッションレベルで指定され得る。
【００６５】
フラグメントＸＡがＸＭＬの集合のための意味論的マッピングとしてデータベースサーバに登録されていたので、意味論を意識した書換えは、この意味論的マッピングおよび経路テーブル１０２に基づく。
【００６６】
ステップ２００において、クエリＱＰはクエリＱＰ′に書換えられ、これが、extractvalue関数によって与えられる経路の、意味論的に同等の経路ＩＤに適合するエントリを探索する。意味論的に同等の経路ＩＤは「12/25」である。これは、ＸＭＬの集合について登録された意味論的マッピングに基づいて生成された。なお、文書内の実際の経路が（/PurchaseOrder/Addressではなく）/PurchaseOrder/Addrであったとしても、文書Ｄ２がクエリＱＰ′によって選択されることに留意されたい。
【００６７】
他の実施例
上述のとおり、説明された方策は、さまざまな形態のタグ名オペレーションに適用可能であり、クエリのコンピュータ処理または評価には限定されない。タグ名オペレーションの別の例としてスキーマ検証がある。スキーマ検証によって、ＸＭＬ文書がＸＭＬスキーマに適合するかどうかが判断される。
【００６８】
ＸＭＬスキーマは、特定の種類のＸＭＬ文書の構造を規定する。たとえば、ＸＭＬスキーマは、ＸＭＬ文書に含まれる要素についての名前、ＸＭＬ文書に含まれる要素間の階層関係、およびＸＭＬ文書に含まれる値の種類を指定し得る。ＸＭＬスキーマを規定する規格には、その内容が引用によりこの明細書中に援用されているＸＭＬスキーマ、パート０、パート１、パート２（XML Schema, Part 0, Part 1, Part 2）（Ｗ３Ｃ推奨（２００１年５月２日））と、その内容が引用によりこの明細書中に援用されているＸＭＬスキーマ、パート１（XML Schema, Part 1）：構造（第２版、Ｗ３Ｃ推奨（２００４年１０月２８日））と、その内容が引用によりこの明細書中に援用されているＸＭＬスキーマ、パート
２（XML Schema, Part 2）：データタイプ（第２版、Ｗ３Ｃ推奨（２００４年１０月２８日））とが含まれる。
【００６９】
意味論を意識したスキーマ検証の下では、ＸＭＬスキーマで規定されたノードと意味論的に同等の名前を有する特定のノードは、その特定のノードの真の名前がスキーマ規定のノードとは異なっていたとしても、同じものとして扱われる。意味論的な同等例は、フラグメントＸＡによって表わされる意味論的マッピングなどの意味論的マッピングに基づいて決定される。
【００７０】
たとえば、スキーマは、要素＜address＞を子＜purchase order＞として含むようＸＭＬ文書を規定し得る。意味論を意識した処理がなければ、文書Ｄ１はＸＭＬスキーマに適合するものとは見なされない。というのも、当該文書は、異なっているが、意味論的に同等の要素＜Addr＞を含んでいるからである。意味論を意識した処理の際に、文書Ｄ１は適合しているものと見なされる。というのも、意味論的マッピングに基づいて、要素＜Addr＞が＜Address＞と同一のものとして扱われるからである。
【００７１】
ハードウェア概要
図３は、この発明の実施例が実現され得るコンピュータシステム３００を図示するブロック図である。コンピュータシステム３００は、情報を通信するためのバス３０２または他の通信メカニズムと、バス３０２に結合され情報を処理するためのプロセッサ３０４とを含む。コンピュータシステム３００はまた、プロセッサ３０４によって実行されるべき情報および命令を記憶するための、バス３０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ３０６を含む。メインメモリ３０６はまた、プロセッサ３０４によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム３００はさらに、バス３０２に結合される、プロセッサ３０４のための静的情報および命令を記憶するための読出専用メモリ（ＲＯＭ）３０８または他の静的記憶装置を含む。情報および命令を記憶するための、磁気ディスクまたは光学ディスクなどの記憶装置３１０が設けられ、バス３０２に結合される。
【００７２】
コンピュータシステム３００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）などのディスプレイ３１２にバス３０２を介して結合され得る。プロセッサ３０４に情報および指令選択を通信するための、英数字および他のキーを含む入力装置３１４がバス３０２に結合される。別の種類のユーザ入力装置は、プロセッサ３０４に方向情報および指令選択を通信するため、ならびにディスプレイ３１２上のカーソルの動きを制御するためのマウス、トラックボール、またはカーソル方向キーなどのカーソル制御部３１６である。この入力装置は、典型的には、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２本の軸における２自由度を有しており、この装置が平面内の位置を指定することを可能にする。
【００７３】
この発明は、この明細書中において記載される技術を実現するためのコンピュータシステム３００の使用に関する。この発明の一実施例に従うと、それらの技術は、プロセッサ３０４がメインメモリ３０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行することに応答して、コンピュータシステム３００によって実行される。このような命令は、記憶装置３１０などの別の機械読取可能媒体からメインメモリ３０６に読込まれ得る。メインメモリ３０６に含まれる命令のシーケンスを実行して、プロセッサ３０４に、この明細書中において記載されるプロセスステップを実行させる。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、配線による回路構成を用いてこの発明を実現してもよい。したがって、この発明の実施例は、ハードウェア回路構成およびソフトウェアのいずれの特定的な組合せにも限定されない。
【００７４】
この明細書中で用いられるような「機械読取可能媒体」という語は、特定的な態様で機械に操作させるデータを与えることに関与するいずれかの媒体を指す。コンピュータシステム３００を用いて実現される実施例においては、たとえばプロセッサ３０４に実行するよう命令を与える際に、さまざまな機械読取可能媒体が含まれる。このような媒体は、不揮発性媒体、揮発性媒体および送信媒体を含む多くの形態を取り得るがこれらに限定されない。不揮発性媒体は、たとえば、記憶装置３１０などの光学または磁気ディスクを含む。揮発性媒体は、メインメモリ３０６などの動的メモリを含む。送信媒体は、バス３０２を備える配線を含む、同軸ケーブル、銅線および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に発生されるような音波または光波の形態を取り得る。すべてのこのような媒体は、媒体によって搬送される命令が、機械に命令を読込む物理メカニズムによって検出され得るように具体的でなければならない。
【００７５】
機械読取可能媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを有する他のいずれかの物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、後で説明されるような搬送波、またはそこからコンピュータが読込可能な他のいずれかの媒体をも含む。
【００７６】
実行用の１つ以上の命令の１つ以上のシーケンスをプロセッサ３０４に搬送する際、さまざまな形態の機械読取可能媒体が含まれ得る。たとえば、命令は初め、リモートコンピュータの磁気ディスクで搬送され得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを用いて電話線で命令を送ることができる。コンピュータシステム３００にローカルなモデムが電話線上のデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号で搬送されるデータを受信することができ、適切な回路構成が当該データをバス３０２に乗せることができる。バス３０２は、データをメインメモリ３０６に搬送し、そこからプロセッサ３０４が命令を取出して実行する。メインメモリ３０６が受けた命令は、プロセッサ３０４による実行の前または後に、記憶装置３１０に任意で記憶され得る。
【００７７】
コンピュータシステム３００はまた、バス３０２に結合される通信インターフェイス３１８を含む。通信インターフェイス３１８は、ローカルネットワーク３２２に接続されるネットワークリンク３２０に双方向データ通信結合を与える。たとえば、通信インターフェイス３１８は、対応する種類の電話線にデータ通信接続を与えるための統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであり得る。別の例として、通信インターフェイス３１８は、互換性のあるＬＡＮにデータ通信接続を与えるためのローカルエリアネットワーク（ＬＡＮ）カードであり得る。無線リンクも実現され得る。このようないずれの実現例においても、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁または光学信号を送受信する。
【００７８】
ネットワークリンク３２０は典型的に、１つ以上のネットワークを通じて他のデータ装置にデータ通信を与える。たとえば、ネットワークリンク３２０は、ローカルネットワーク３２２を通じてホストコンピュータ３２４に、またはインターネットサービスプロバイダ（ＩＳＰ）３２６によって操作されるデータ機器に接続を提供し得る。ＩＳＰ３２６は次いで、現在一般的に「インターネット」３２８と称される広域パケットデータ通信網を通じてデータ通信サービスを提供する。ローカルネットワーク３２２およびインターネット３２８はともに、デジタルデータストリームを搬送する電気、電磁または光学信号を用いる。さまざまなネットワークを通る信号、ならびにコンピュータシステム３００との間でデジタルデータを搬送し合う通信インターフェイス３１８を通るネットワークリンク３
２０上の信号は、情報を移送する搬送波の例示的な形態である。
【００７９】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信インターフェイス３１８を通じて、メッセージを送り、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ３３０が、インターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２および通信インターフェイス３１８を通じてアプリケーションプログラムについての要求コードを送信し得る。
【００８０】
受信されたコードは、その受信時にプロセッサ３０４によって実行され得、および／または、後で実行するために記憶装置３１０もしくは他の不揮発性記憶装置に記憶され得る。この態様で、コンピュータシステム３００は、アプリケーションコードを搬送波の形態で得ることができる。
【００８１】
上述の明細書においては、この発明の実施例が、実現例ごとに異なり得る多数の特定的な詳細を参照して説明された。したがって、発明であるもの、および出願人によって発明であると意図されるものを唯一および独占的に示すものは、いずれの後の訂正をも含む、この出願から生じる一組の請求項であり、そのような請求項が生じる特定的な形態におけるものである。そのような請求項に含まれる用語についてこの明細書中において明示的に記載されるいずれの定義も、請求項において用いられるようなそのような用語の意味を決定するものとする。したがって、請求項において明示的に列挙されていない限定、要素、性質、特徴、利点または属性は、そのような請求項の範囲を如何なる意味でも限定するものではない。したがって、明細書および図面は、限定的ではなく例示的に認識されるべきである。
【図１】
2009544102.tif 000009
【図２】
2009544102.tif 000010
【図３】
2009544102.tif 000011
【手続補正書】
【提出日】平成20年9月16日(2008.9.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータによって実現されるステップを含む方法であって、前記コンピュータによって実現されるステップは、
正規のタグ名を、第１のノードの第１の名前と、前記第１の名前とは異なる第２のノードの第２の名前とにマップする意味論的マッピングを格納するステップを含み、ＸＭＬ文書の集合は前記第１のノードおよび前記第２のノードを含み、前記コンピュータによって実現されるステップはさらに、
前記意味論的マッピングに基づき、前記第１の名前および第２の名前を同一の名前として扱うことによりタグ名オペレーションを実行するステップを含み、
前記タグ名オペレーションは、前記ＸＭＬ文書の集合に対して発行されたクエリのコンピュータ処理であり、前記クエリはクエリ言語に準拠する、方法。
【請求項２】
コンピュータによって実現されるステップを含む方法であって、前記コンピュータによって実現されるステップは、
正規のタグ名を、第１のノードの第１の名前と、前記第１の名前とは異なる第２のノードの第２の名前とにマップする意味論的マッピングを格納するステップを含み、ＸＭＬ文書の集合は前記第１のノードおよび前記第２のノードを含み、前記コンピュータによって実現されるステップはさらに、
前記意味論的マッピングに基づき、前記第１の名前および第２の名前を同一の名前として扱うことによりタグ名オペレーションを実行するステップを含み、
前記タグ名オペレーションはＸＭＬ文書のスキーマ検証である、方法。
【請求項３】
前記タグ名オペレーションは、前記ＸＭＬ文書の集合へのアクセスを管理するレポジトリによって実行される、請求項１または２に記載の方法。
【請求項４】
前記コンピュータによって実現されるステップは、前記意味論的マッピングを表わすデータを登録する要求を受信するステップと、
前記要求に応答して、前記データを前記意味論的マッピングとして登録するステップとをさらに含む、請求項３に記載の方法。
【請求項５】
コンピュータによって実現されるステップを含む方法であって、前記コンピュータによって実現されるステップは、
ＸＭＬ文書の集合における複数のノードの各ノードについて、
意味論的マッピングに基づいて意味論的経路ＩＤを生成するステップを含み、
前記複数のノードは第１のノードおよび第２のノードを含み、
第１の名前は前記第１のノードまたは前記第１のノードの先祖ノードに関連付けられており、
第２の名前は前記第２のノードまたは前記第２のノードの先祖に関連付けられており、
前記意味論的マッピングは、正規のタグ名を前記第１の名前および前記第２の名前にマップし、
前記第１のノードおよび前記第２のノードのために生成された意味論的経路ＩＤは同一である、方法。
【請求項６】
前記各ノードのための意味論的経路ＩＤは、前記各ノードの経路におけるノードの各々の名前についてのコードを含み、
前記第１の名前についてのコードおよび前記第２の名前についてのコードは同じである、請求項５に記載の方法。
【請求項７】
前記コンピュータによって実現されるステップはさらに、
前記複数のノードのために生成される意味論的経路ＩＤによって前記複数のノードに索引付けするインデックスを作成するステップを含む、請求項５に記載の方法。
【請求項８】
前記ＸＭＬ文書の集合はデータベースサーバによって管理され、前記コンピュータによって実現されるステップはさらに、
ＸＭＬ文書の集合に対して発行されたクエリを受信するステップを含み、前記クエリは経路を指定し、前記コンピュータによって実現されるステップはさらに、
前記経路に基づいて、データベースサーバが前記インデックスにアクセスするよう前記クエリを書換えるステップを含む、請求項５に記載の方法。
【請求項９】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の１つ以上のシーケンスは、１つ以上のプロセッサによって実行されると、請求項１から８のいずれかに記載の方法を前記１つ以上のプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１０】
ＸＭＬ文書の集合における複数のノードのインデックスを記憶するコンピュータ読取可能媒体であって、
前記複数のノードの各ノードは、前記各ノードを含む或る経路に関連付けられており、
前記インデックスの各エントリは、前記複数のノードの特定のノードに対応し、前記特定のノードの或る経路を表わす意味論的経路ＩＤに前記ノードを関連付け、
前記複数のノードは第１のノードおよび第２のノードを含み、
第１の名前は、前記第１のノードまたは前記第１のノードの先祖ノードに関連付けられており、
第２の名前は、前記第２のノードまたは前記第２のノードの先祖ノードに関連付けられており、
前記第１のノードおよび前記第２のノードについてのそれぞれの意味論的経路ＩＤは同一である、コンピュータ読取可能媒体。
【請求項１１】
前記各ノードについての意味論的経路ＩＤは、前記各ノードの経路におけるノードの各々の名前についてのコードを含み、
前記第１の名前および前記第２の名前についてのそれぞれのコードは同じである、請求項１０に記載のコンピュータ読取可能媒体。
【国際調査報告】
2009544102.tif 000012
2009544102.tif 000013