JP6720641B2 - 多言語データティアのデータ制約 - Google Patents

多言語データティアのデータ制約 Download PDF

Info

Publication number
JP6720641B2
JP6720641B2 JP2016068461A JP2016068461A JP6720641B2 JP 6720641 B2 JP6720641 B2 JP 6720641B2 JP 2016068461 A JP2016068461 A JP 2016068461A JP 2016068461 A JP2016068461 A JP 2016068461A JP 6720641 B2 JP6720641 B2 JP 6720641B2
Authority
JP
Japan
Prior art keywords
data
record
shape
store
tier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016068461A
Other languages
English (en)
Other versions
JP2016212839A (ja
Inventor
メンディ・ロジャー
コスタベッロ・ルカ
ヴァンデンブッシェ・ピエール−イヴ
ウムブリヒ・ユルゲン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2016212839A publication Critical patent/JP2016212839A/ja
Application granted granted Critical
Publication of JP6720641B2 publication Critical patent/JP6720641B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ記憶の分野に関する。特に、本発明の実施形態は、複数の異種データベースを有するデータティア(所謂、「多言語データティア」)におけるデータ制約をモデル化し及び施行するメカニズムに関する。
「データティア」の概念は、ソフトウェア工学において広く用いられる。マルチティアアーキテクチャは、プレゼンテーション、アプリケーション処理、及びデータ管理機能が物理的に分離しているクライアント−サーバアーキテクチャである。一般的にnティアアーキテクチャが考えられるが、最もよく用いられるアーキテクチャは3ティアアーキテクチャである。3ティアアーキテクチャは、標準的に、プレゼンテーションティア、ロジック又は処理ティア、及びデータ記憶ティアで構成される。
図1は、このような3ティアアーキテクチャを簡略化した形式で示す。(図1に示すように)個々のティアが異なるハードウェアに実装されると考えることは有用である場合があるが、これは必須ではない。
本例では、ティア1は、図1のクライアントにより示されるデスクトップPC若しくはワークステーション上で動き及び標準的なグラフィカルユーザインタフェースを使用し得る最上位のアプリケーションのユーザインタフェースを含むクライアントティアである。このティアは、中間のティアであるティア2(ロジックティアとも呼ばれる)に(クエリのような)データを供給する。ティア2は、アプリケーションの機能を提供するために、(図1のサーバにより示される)ワークステーション若しくはアプリケーションサーバ上で動き1又は複数の別個のモジュールで構成され得る機能プロセスロジックを有する。ティア3は、上位ティアからクエリを受け取り、図1のデータベースにより概略的に示されるコンピュータデータ記憶ロジックを含むデータベースサーバ又はメインフレームに実装され得るデータティアである。このティアは、アプリケーションにより参照されるデータセットと、データを管理し及びデータへのアクセスを提供するデータベース管理システムと、を有する。API(Application Program Interface)は、個々のティアの間に存在しても良い。各々のAPIは、異なるティアの中のソフトウェアが互いに相互作用する仕様である。したがって、APIラッパーがティア3データベースに理解可能なクエリのフォーマットに要求を変換する場合、ティア1から生じる要求又はデータ操作が与えられる。
実際には、マルチティアアーキテクチャは、各々のレベルにおける複数のシステム又はノードの使用を含み得る。このように、ア―キテクチャの各々のティアは、分散形式で提供されても良い(実施には、各々のティアの要素は、例えばインターネット上のどこに位置しても良い)。また、ノードは同一のハードウェアシステムとして図示されるが、より一般的には、各々のティアは、ハードウェア及びソフトウェアレベルの両方において異種であっても良い。このようなマルチシステム実装は、個々のノード又はシステムが異種標準若しくは技術を利用する所謂「多言語」ティアの可能性を生じる。例えば、クライアントティアは、ウェブに基づくインタフェースを提供するためにHTML、CSS及びJavaScript(登録商標)を利用しても良く、iOS又はAndroidのようなモバイルプラットフォームはモバイルインタフェースを利用しても良い。中間のティアは、Java、.NET、又は多くの他の利用可能なプラットフォームのうちの1つを利用しても良い。
本発明に特に関連するものとして、分散型データベースを形成するために種々のデータベース技術を結合する多言語データティアの可能性がある。データベース技術の2つの主なクラスは、次の通りである。
(i)SQL(Structured Query Language)を用いるRDBMS(traditional relational database)アプローチ。これは、関係型データベースに格納されたデータを記憶し、操作し、及び読み出すためのコンピュータ言語である。SQLに基づく言語の例は、MySQL、Oracle、又はMS SQLを含む。
(ii)NoSQL(Not only SQL))データベース。これは、関係型データベースで用いられる表形式の関係以外の手段により構造化されるデータの記憶及び読み出しのためのメカニズムを提供する。NoSQLデータベースの例は、MongoDB及びCassandraを含む。
余談として、留意すべきことに、関係型データベースは、データを格納する前に定められる必要のあるテーブルを形成するために、行及び列にデータを格納する。テーブルの定義及びこれらのテーブルに含まれるデータ間の関係は、スキーマと称される。関係型データベースは、固定スキーマを用いる。
グラフデータベースは、データをノード及びアークの形式で格納することにより、関係型データベースの重要な拡張を表す。ここで、ノードはエンティティ又はインスタンスを表し、アークは任意の2個のノード間の特定種類の関係を表す。幾つかの種類のグラフ表現がある。グラフデータは、多次元アレイとして又は他のシンボルにリンク付けされたシンボルとしてメモリに格納されても良い。別の形式のグラフ表現は、各々指定された種類のオブジェクトの有限シーケンス又は順序付きリストである「タプル」の使用である。n個のオブジェクトを含むタプルは、「nタプル」として知られる。ここで、nは零より大きい任意の非負整数である。長さ2のタプル(2タプル)は、通常、ペアと呼ばれる。3タプルはトリプルと呼ばれ、4タプルはクワドラプルと呼ばれ、以降同様である。
データベース技術の選択は、記憶エンジン、データモデル、及びクエリ言語を選択する必要がある。関係型データベースは、通常、クエリ言語としてSQLにより、関係型データモデルをサポートする。他方で、NoSQLデータベースは、それぞれ、専門クエリ言語と一緒に、文書、グラフ、キー値、又は列指向モデルのような単一データモデルをサポートする。例えば、MongoDBは文書データモデルを用い、Cassandraは列指向モデルを用いる。キー値は、アプリケーション開発者がスキーマレスデータを格納できるようにする。このデータは、通常、キーを表すストリングと、「キー値」関係の中の値と考えられる実際のデータと、を有する。
したがって、多言語データティアは、異なるデータモデル(例えば、関係型、文書に基づく、グラフに基づく、等)を採用する自律データストアのセットである。
ここで、後にRDF、オントロジ、RDFS、OWL、OSLC、及びQUDTを参照するので、これらの用語の幾らかの簡単な説明が与えられる。
RDF(Resource Description Framework)は、ウェブリソースの中に実装される情報の概念的記述又はモデル化のための一般的方法として用いられるW3C(World Wide Web Consortium)仕様のファミリである。RDFは、主語−述語−目的語表現の形式で、リソース(特にウェブリソース)に関するステートメントを作成する概念に基づく。これらの表現は、上述のトリプルの例である。主語はリソースを示し、述語はリソースの特性又は特長を示し並びに主語と目的語との間の関係を表す。
RDFは、データを表現するための柔軟なモデルを提供する、ラベル付きノード及び有向ラベル付きエッジを有するグラフに基づくデータモデルである。RDFの基本ユニットは、ステートメントであり、グラフの中のエッジに対応する。RDFステートメントは、3つのコンポーネント、つまり主語、述語、及び目的語を有する。主語は、エッジの起点であり、リソースでなければならない。RDFでは、リソースは、URI(Uniform Resource Identifier)によりユニークに識別可能ないかなるものでも良い。標準的に、この識別子は、URIの特定の例である、インターネット上のURL(Uniform Resource Locator)であるしかしながら、URIは、URLよりも一般的である(URIがインターネット上の文書の場所を特定するために使用できるという要件はない)。
ステートメントの目的語は、エッジの宛先である。主語と同様に、これはURIにより識別されるリソースであるが、代替でストリング又は数のようなリテラル値であり得る。ステートメントの述語(これもURIにより識別される)は、主語と目的語との間をどんな関係が保つかを決定する。言い換えると、述語は、目的語へのリンクを提供することにより主語に関する何かを主張する一種のプロパティ又は関係である。
図2は、3つのステートメントを有する例示的なRDFグラフを示す。1つのステートメントは、主語http://example.org/~jdoe#jane、述語p:knows、及び目的語Jane Doeを有する。言い換えると、このステートメントは、「JaneがJohnを知っている(Jane knows John)」を表す。述語p:nameを有するステートメントは、目的語としてリテラル値(つまり「Jane Doe」)を有するステートメントの一例である。このステートメントは、Janeの名前が「Jane Doe」であることを示す。ここで、p:knows及びp:nameは修飾名と呼ばれる。第3のステートメントは、Janeが人であることを言明する。
上述のトリプルは、グラフデータを符号化するために用いることができる。各々のトリプルは、主語−述語−目的語表現を表す。したがって、RDFグラフは、RDFトリプルのセットとして表すことができる。また、RDFトリプルは、ネストされた(nested)データ構造のシリーズとして書き出すことができる(シリアライズ、serialised)。RDFトリプルをシリアライズする種々の方法がある。例えば、XML(Extensible Markup Language)又はJSON(JavaScript Object Notation)を用いて、種々のファイルフォーマット(シリアライゼーション(serialisation)フォーマット)を生じる。
一例として、以下のXMLコードは、図2のRDFグラフのシリアライゼーションである。
Figure 0006720641
リソースを記述するRDFメカニズムは、キー概念が「リンク付きデータ」である、W3Cの「Semantic Web」の取り組みにおける主要なコンポーネントである。リンク付きデータは、基本的に、インターネットリソースを、機械及び人間による使用のために設計されたグローバルデータベースに組織化することを目的とする。ここで、リンクは、文書間ではなくオブジェクト(又はオブジェクトの記述)間に設けられる。リンク付きデータのためのW3CのSemantic Web技術スタックの鍵となる部分は、上述のRDF及びURIに加えて、RDFS及びOWLを含む。
RDFS(RDF Schema)は、RDFの意味的拡張であり、RDFで記述される。これは、関連するリソースのグループ及びこれらのリソース間の関係を記述するためのメカニズムを提供する。これらのリソースは、プロパティのドメイン及び範囲のような、他のリソースの特徴を決定するために用いられる。したがって、RDFSは、RDFリソースを構造化する目的で、オントロジの記述、又はRDF語彙と呼ばれる、のための基本要素を提供する(因みに、用語「オントロジ」と「語彙」との間の区別が引き出されても良いが、本願明細書では、特に文脈上必要でない限り、これらの用語は同義的に用いられる)。RDFを用いるリソースに関する記述は、トリプルストアに保存され、RDFクエリ言語SPARQLを用いて読み出され操作され得る。RDFS及びSPARQLの両者は、W3CのSemantic Web技術スタックの部分である。
RDFスキーマクラス及びプロパティシステムは、Javaのようなオブジェクト指向プログラミング言語のタイプシステムと似ている。しかしながら、RDFスキーマは、クラスのインスタンスが有するプロパティの観点で該クラスを定める代わりに、RDFスキーマはそれらが適用するリソースのクラスの観点でプロパティを記述する点で、このようなシステムと異なる。RDFスキーマアプローチは、これらのクラスの元の記述を再定義する必要がなく、追加プロパティを他者が続いて定義することが簡単であるという意味で、「拡張性がある」。
一方で、OWL(Web Ontology Language)のようなより豊かな語彙/オントロジ言語は、データの構造及び意味に関する追加情報をキャプチャすることを可能にする。
OSLC(Open Service for Lifecycle Collaboration)は、関連リソース間のリンクによりデータレベルにおける統合を可能にするためにRDFの上に構築される別のオントロジである。OWLのように、OSLCは、RDF上に構築されRDFを拡張する。つまり、OSLCリソースは、RDFプロパティの観点で定められる。
QUDT(Quantity, Unit, Dimension and Type)オントロジは、物理量をモデル化するために用いられる制限及び基本クラスプロパティ、種々の測定システムにおける測定単位及びそれらの次元、を定める。OWLを基礎として、QUDTオントロジの目標は、測定可能な量、異なる種類の量を測定するための単位、異なる測定ユニットの量の数値、並びに、ソフトウェアにいてこれらのオブジェクトを格納し操作するために用いられるデータ構造及びデータ型、の統一モデルを提供することである。
データ検証は、ソフトウェア工学におけるもう1つの重要な概念である。例えば、図1のクライアントティアを参照すると、データは、標準的に、複数のデータ入力フィールドを有するデータ入力フォームを満たすユーザにより入力される。入力されたデータを下位ティアに渡す前に、各々のデータ入力フィールドは、所定の基準について検証される。この検証処理は、データが適正なフォーマットで入力されたこと及び期待値の妥当な範囲であることを保証する。データベースを用いる全てのアプリケーションの間で検証の一貫性を保証するために、検証基準は、データ制約セットにより定められても良い。制約定義言語は、データ制約を定めることができるように定められても良い。しかし、これらは、従来、特定のデータベース技術に固有であり及び/又は独自仕様である(例えば、Oracle CorpによるCDL)。
留意すべきことに、データ検証は、ユーザにより入力されるデータの上述の例に限られない。より一般的には、データ制約は、関係型データベースに基づき構築されるマルチティアアーキテクチャにおいて広く採用されるメカニズムである。それらは、宣言型アプローチによるデータ検証を可能にし、したがってプログラミング労力を削減する。データ制約は、以下のような異なるレベルにおいてプログラミング言語に依存する検証コードから開発者を解放する。
・データレベルに適用されるとき(例えば、データベース管理システムの内部)、それらはデータベース固有検証コードを回避する。
・API(Application Program Interface)において使用されるとき、それらは、クライアント入力の一貫性チェックを提供し、したがって、APIに依存する入力検証コードを置き換える。
例えば、SQL CHECK制約は、データベーステーブルの中の各々の表により満たされなければならない要件を指定するSQLにおけるインテグリティ制約の種類である。この制約は、述語でなければならず、テーブルの中の単一又は複数の列を参照できる。一方で、デ―タ制約に関連するW3Cの中の多数の活動がある。これらは、RDFグラフに対する制約を表現し、プログラマにRDF文書を検証させ、インタフェースについて期待されるグラフパターンを通信し、ユーザインタフェースフォーム及びインタフェースコードを生成し、及びSPARQLクエリにコンパイルする言語であるShape Expressionsを含む。同様に、OSLC Resource Shapesは、許可された値を有するプロパティのリストの仕様、及び該リストのRDFSクラスとの関連付けを許可する。
他方で、真にスキーマレスなデータベースは、データ型を参照しないでデータを格納でき、データ制約を設けることを困難にする。
先の議論の幾つかを纏めると、W3Cは、RDFにおける語彙及びオントロジを記述するためにRDFS及びOWLを含む標準を提供する。これらの標準は、主に、異なる語彙のリコンシレーション(reconciliation、融和)をサポートして、種々のデータセットと与えられた情報から新しい情報を推測する能力を有する推論エンジンとの統合を実現するために設計される。OSLC Resource Shapesは、RDFグラフに対する制約を指定し及び検証するために用いることができるRDF語彙を提供する。Resource Shapesは、それらが扱うリソースの種類をクライアントとプログラムで通信し、それらがクライアントから受信するコンテンツを検証する方法をサーバに提供する。
しかしながら、上述のように、マルチティアシステムは、多言語データティアに味方して、純粋な関係型バックエンドから革新的に離れている。現在のデータベース固有制約施行メカニズムは、複数のデータモデルが共存する又はスキーマレスデータベースを有し得るデータティアに適合しない。
例えば、顧客の購入品を追跡し多数の製品製造者のためにレポートを生成する、顧客のネットワークを分析するシステムを検討する。このシステムは、マルチティアアーキテクチャにより実装され、製造者プロファイルを関係型データベースに格納する多言語データティア、及びトリプルストアの顧客のソーシャルネットワークを含む。さらに、このシステムは、種々の製造者の製品カタログを統合すべきである。このようなデータは、製造者により所有されるリモートデータベースに格納され、データベースの事前の知識は与えられない。
このようなシナリオにおいてデータ制約を施行することは、複数の制約定義言語を熟知している必要がる。つまり、データレベルにおいて関係型データベースのテーブルは、おそらくSQL CHECK制約を含む属性データ型を指定しなければならない。OSLC Resource Shapes又はW3C Shape Expressionsに関する知識は、トリプルストアデータを制約するために必要である。リモートデータストアは、第三機関により管理され、多言語システム設計者は、データベースレベルの制約を追加するアクセス権を有しない。さらに、このようなリモートデータベースは、スキーマレスであっても良く、したがって検証メカニズムを欠いている。したがって、未知の第三機関データストアをサポートすることは、アプリケーションレベルの検証コードを必要とする。これは、追加の開発労力を意味する。さらに、このような検証コードは、リモートストアが新しいデータモデル及びAPIに基づくかも知れないので、拡張をサポートしなければならない。
したがって、多言語データティアにおける制約の定義及び施行のためのストア非依存(agnostic)メカニズムが必要である。
本発明の第1の態様によると、複数の異種データストアを有する多言語データティアにいてデータ制約を施行する方法であって、前記データが格納される方法及び場所に係わらず、前記データストアの中のデータを、前記データをシリアライズするレコードと見なすステップと、検証されるべきレコードを抽出するステップと、前記レコードに対応するレコードシェイプを見付け、レコードの構造を決定するステップであって、各々のレコードシェイプは拡張可能語彙で表される、ステップと、前記対応するレコードシェイプの中で定められる複数の基準の各々に対して前記レコードをチェックすることにより、前記レコードにデータ制約を適用するステップと、全部の前記基準が満たされる場合、前記レコードを有効であると決定するステップと、を有する方法が提供される。
ここで、異種データストアは、異なる技術、データモデル、等を用いる異なる種類のデータベースであっても良い。
データをレコードと見なすステップは、データベース固有形式で格納されたデータを、「レコード」と呼ばれる共通形式で表すステップを含み得る。したがって、データが格納される(格納されるべき)方法及び場所の詳細は、もはや重要ではない。
検証されるべきレコードを抽出するステップは、データストアから既存のレコードを出力するステップ、又はデータストアに又はそれから特定のデータを生成し、読み出し、更新し、又は削除するユーザ要求からレコードを引き出すステップ、を有し得る。要求からレコードを引き出すステップは、指定されているデータを識別する要求を解析するステップと、レコードの形式で結果を提供するステップと、を有し得る。
レコードシェイプを見付けるステップは、引き出されたレコードに適合するレコードシェイプを見付けるために、定められたレコードシェイプのデポジトリを参照するステップを有し得る。レコードシェイプに対してレコードを検証するステップは、レコードが完全であり期待される形式に従うこと調べるために、後述する多数の基準のいずれかに従ってレコードの形式をチェックすることを意味する。
したがって、統一データモデルは、「レコード」の概念に基づき提供される。各々のレコードは、定められた構造又はそれに関連する「レコードシェイプ」に従ってデータを表す。レコードシェイプは、RDFS/OWLのような拡張可能語彙で表され、多言語データティアと独立のレポジトリに格納されて、起こり得る予期しないデータモデル、データ型、等を有する追加データストアを扱うために新しいレコードシェイプを定めることを可能にする。データ制約は、レコードが関連するレコードシェイプにより定められた構造に従うことを保証することによりレコードを検証するために、何らかの方法で抽出された(例えば、POST、GET、PUT、又はDELETEのような多言語データティアの中の指定データを操作するために入ってくる要求から抽出された)レコードに適用される。
標準的に、レコードの検証結果は、多言語データティアに関するデータ操作を許可するためである。したがって、方法は、望ましくは、前記レコードが有効であると決定される場合、前記データストアの中に前記レコードを作成する、データストアから前記レコードを読み出す、前記レコードを用いてデータストアを更新する、及びデータストアからレコードを削除する、のうちの1又は複数を含む操作を前記レコードに対して実行するステップ、を更に有する。
方法は、指定データを含む要求を受信するステップと、前記指定データに基づき検証されるべきレコードを抽出するステップと、も有しても良い。
ここで1つの可能性として、例えば要求が新しいレコードをデータストアの中に生成することである場合、上述のレコードは要求に含まれる。
代替で、レコードは、データストアのうちの1つに含まれ、要求の中で指定されても良い。これは、例えば、リモートクライアントにより要求されるリード操作の場合に適用される。
更なる可能性として、レコードは、特定のクライアント要求を有しないで、例えばデータベースのチェック又は発見の処理の中で識別される。
望ましくは、方法は、各々のデータストア(つまり、多数の異なる種類のうちの1つであり得る各々のデータベース)を、データソース識別子を有する抽象データソースとして表すステップを更に有する。要求は、指定されたデータに対応するデータソース識別子を特定できる情報を含む。このように、検証された要求は、適切なデータストアへ容易にルーティングされ得る。
望ましくは、各々のレコードは、コンマで区切られた値のn要素タプルである。本発明は、任意の種類のデータストアに適用できる。例えば、データストアのうちの1又は複数は、トリプルストアであっても良い。この場合、トリプルストアの中のデータのレコードの中で、各々のコンマで区切られた値は、RDF述語の目的語に対応する。
代替で、データストアは、RDBMSを有しても良く、RDBMSの中のデータのレコードの中で、各々のコンマで区切られた値は、テーブルに格納された属性に対応する。
本発明が適用され得る他の可能なデータストアの種類は(網羅的ではないが)、MongoDBのような文書指向型データベース、Cassandraのような列指向型テーブルに基づくデータベース、及びキー値ペアに基づくデータベースを含む。ハイブリッドデータベースも存在しても良い。例えば、Cassandraは、ハイブリッド列指向及びキー値ペアデータベースと考えることができる。
未だ開発されていない種類を含む新しい種類のデータストアも、本発明により対応できる。したがって、方法は、望ましくは、新しい型のデータストアが前記多言語データティアに追加されるとき、前記データストアに格納されたデータの構造を定める新しいレコードシェイプを定めるために、前記拡張可能語彙を用いるステップ、を更に有する。
各々のレコードシェイプは、望ましくは、データ型、濃度、及びレコードのフィールドフォーマットに関する情報を含み、RDF(Resource Description Framework)nタプルのセット(例えば、トリプル)として表されても良い。レコードシェイプは、データモデルと独立であるために、RDFS/OWLオントロジを用いても良い。方法が各々のデータストアにより用いられるデータモデルの詳細に無関心なので、これは「ストア非依存」アプローチとも呼ばれる。
本発明の第2の態様によると、複数の異種データストアを有する多言語データティアにおいてデータ制約を施行するデータ制約エンジンであって、前記データが格納される方法及び場所に係わらず、前記データストアの中のデータを、前記データをシリアライズするレコードと見なす手段と、検証されるべきレコードを抽出する手段と、前記の抽出されたレコードに基づき、シェイプカタログからのレコードシェイプにアクセスし、レコードの構造を決定する手段であって、各々のレコードシェイプは、拡張可能語彙で表される、手段と、対応するレコードシェイプの中で定められる複数の基準に対して前記レコードを検証し、全部の前記基準が満たされる場合に前記レコードを有効であると決定する複数の検証器と、を有するデータ制約エンジンが提供される。
データ制約エンジンは、望ましくは、クライアント要求のためのインタフェースと、レコードディスパッチャと、を更に備えられる。したがって、一実施形態では、複数の異種データストアを有する多言語データティアにおいてデータ制約を施行するデータ制約エンジンであって、要求を処理するインタフェースであって、各々の要求はデータを指定し、前記インタフェースは、要求から、該要求の中で指定されたデータに対応するレコードを抽出するよう構成され、レコードは、データが格納される方法及び場所にかかわらず、前記データストアの中のデータをシリアライズする、インタフェースと、前記インタフェースにより抽出されたレコードに基づき、シェイプカタログからのレコードシェイプにアクセスし、レコードの構造を決定する手段であって、各々のレコードシェイプは拡張可能な語彙で表される、手段と、前記指定されたデータをルーティングし、又は前記指定されたデータに対応するレコードが検証器により検証された後に、前記多言語データティアの中の適切なデータストアからデータを検索するレコードディスパッチャと、が提供される。
前記多言語データティアの中の異種データストアの各々は、望ましくは、データソース識別子を有する抽象データソースとして表され、前記要求は、前記指定されたデータに対応する前記データソース識別子を示す情報を含み、望ましくは、前記インタフェースは、前記要求から前記データソース識別子を抽出するよう構成される。
前記複数の検証器は、スロットカウント、濃度、データ型、及びフォーマット(ここで、フォーマットは、例えばHTML、XML、又はJSONを含む)の各々のための個々の検証器を有しても良い。スロットカウントは、レコードの中の「スロット」の数を表す(ここで、スロットは、レコードの1又は複数のフィールドのラッパーである)。他の検証器が、各々のスロットに適用されても良い。例えば、濃度は、スロットの中に存在し得る要素の数を表しても良い。データ型は、スロットの各々のフィールドの中で許可されるデータの型を指定しても良い。フォーマットは、HTML、XML、又はJSONのような特定の言語に従ってそれぞれ満たされるシンタックスを定めても良い。
各々のレコードシェイプは、望ましくは、RDFS/OWL語彙で表されるRDF(Resource Description Framework)トリプル(又はnタプル)である。RDFトリプルは、識別する前提として、URIのようなウェブ識別子を用いて「もの」(つまり、オブジェクト、リソース又はインスタンス)を識別し、それら識別される「もの」を簡易なプロパティ及びプロパティ値の観点で記述する。トリプルの観点では、主語はエンティティを記述するウェブリソースを特定するURIであっても良く、述語は特性の種類(例えば、色)を特定するURIであっても良く、目的語は問題のエンティティに起因する特性の種類の特定のインスタンスを指定するURIであっても良い。
上述のデータ制約エンジンの特徴は、上述の方法のうちの任意のものに適用され得る。逆も同様である。
本発明の第3の態様によると、上述のデータ制約エンジンとして機能するよう構成されるコンピューティング装置が提供される。
本発明の第4の態様によると、コンピューティング装置により実行されると、前記コンピューティング装置に上述のコンピューティング装置として動作させる、コンピュータプログラムが提供される。
本発明の実施形態は、多言語データティアにおけるデータ制約を扱うときに生じる以下の問題を解決する。
A)データ設計者及び開発者は、複数の制約定義言語を扱わなければならない。これは、保守を益々困難にする。
B)予期しないデータモデルを採用するデータストアが多言語データティアに追加される場合がある。したがって、拡張可能なアプローチが必要である。
C)多言語データティアは、リモートの第三機関データストアを有する場合が多い。例えば、データベースが直接制御下にない。したがって、多言語データティアアーキテクチャは、代替の制約施行メカニズムを必要とする。
今日のプロトコルは、上述の問題を解決できない。より具体的には、次の通りである。
A)制約を宣言し施行するためのストア非依存アプローチがない。したがって、多言語データティアにおける採用を妨げている。
B)予期しないデータモデルに適合する拡張可能な設計がない。
C)これらの大部分は、データストアに対する直接制御を必要とする。したがって、第三機関リモートデータベースをサポートしない。
本発明の実施形態は、データ固有のデータモデルに束縛される制約を置換するのではなく、多言語データティアにおけるデータ検証のための汎用的アプローチを提供する。
ストア非依存エンジンは、多言語データティアにおける制約施行のために提案される。制約は、宣言型アプローチにより記述されるので、データストア固有制約言語が用いられない。さらに、制約は軽量なオントロジの上でモデル化されるので、拡張は自然にサポートされる。制約は、独立型レポジトリに格納され、検証エンジンにより実行時間に施行される。したがって、第三機関データストアを有する多言語データティアが自然にサポートされる。
したがって、本発明の一実施形態は、多言語データティアのためのストア非依存データ制約エンジンである。データ制約エンジンは、RDFS/OWLを用いて表されるデータ制約(つまり、ルール)を用いて、多言語データティアに格納された(又は格納されるべき)データに関連するデータ操作(要求)をチェックしても良い。
さらに具体的には、本発明の一実施形態は、RDBMS、トリプルストア、及びMongoDBのような種々の種類の複数のデータベース固有データストアを有する多言語データティアにおいてデータ制約を施行するデータ制約エンジンを提供できる。データ制約エンジンは、ストア非依存の方法で(所謂「レコードシェイプ」を用いて)データ制約が定められるために、「レコード」に基づく統一モデルの概念を用いる。
データ制約エンジンは、例えば、多言語データティアの中のデータにアクセスするためにリモートクライアントから入ってくる要求を処理するAPIを含むことにより、ユーザ要求に提供され得る。APIは、各々の要求から、要求の中で指定されたデータに対応するレコード、及び指定されたデータを保持するデータストアを識別するデータソース識別子を抽出する。次に、インタフェースにより抽出されたレコードに基づき、適切なレコードシェイプが、シェイプカタログから抽出される。レコードシェイプは、レコードの構造を決定する。検証器は、それぞれ、フォーマット、データ型、濃度、及びスロット数のような種々の基準に従ってレコードシェイプに対してレコードを検証する。本例では、レコードが検証される場合、レコードディスパッチャは、データソース識別子を用いて適切なデータストアへ指定されたデータを向ける。
上述の及び他の実施形態では、以上で識別された技術的問題は、以下のように解決される。
A)本発明は、「レコードシェイプ」の概念を導入する。これは、データモデルと独立な、RDFS/OWL語彙に基づく宣言型の制約である。既存の提案と異なり、このようなオントロジは、データモデル非依存であるよう設計される。レコードシェイプ及びレコードに基づく統一データモデルにより、データ制約エンジンは、ストア非依存アプローチを保証し、データベース固有の制約言語から開発者を解放する。したがって、多言語データティアのシナリオに適合する。さらに、レコードシェイプは習慣的なRDFトリプルなので、開発者は、新しい制約定義言語を学習する必要がない。
B)RDFS/OWL語彙によりレコードシェイプをモデル化することは、データベース固有制約への拡張性を保証し、したがって、広範なデータストア及び予期しないデータモデルのサポートを可能にする。言い換えると、既存のシェイプは、直ちに変更され、新しいシェイプが追加される。拡張性は、モジュラ及び拡張可能なデータ検証器によっても保証される。
C)レコードシェイプは、多言語ティアの中の各々のデータストアの内部に格納される必要はない。代わりに、レコードシェイプは、多言語ティアアーキテクチャ(シェイプカタログ)の直接制御の下で独立したレポジトリに格納される。したがって、第三機関データストアのサポートを可能にする。
マルチティアアーキテクチャの概略図を示す。 RDFグラフの一例を示す。 データソースとレコードとの間の変換を示し、トリプルからレコードへの変換を示す。 データソースとレコードとの間の変換を示し、関係型テーブルからレコードへの変換を示す。 本発明の実施形態で用いられるレコードシェイプ語彙を示す。 図4のレコードシェイプ語彙を用いて定められる例示的なレコードシェイプを示し、RDFグラフのレコードシェイプを示す。 図4のレコードシェイプ語彙を用いて定められる例示的なレコードシェイプを示し、関係型DBテーブルのレコードシェイプを示す。 本発明の一実施形態で提供されるデータ制約エンジンのアーキテクチャを示す。 本発明の一実施形態で用いられる制約施行アルゴリズムのフローチャートである。 データ検証器のデータ制約エンジンへの追加を示す。 本発明のデータ制約エンジンを実装するために適するコンピュータシステムを示す。
本発明の実施形態は、例として図を参照して説明される。
この章は、i)検証制約モデル及びそれらの基準、ii)検証エンジンアーキテクチャ、iii)検証制約施行メカニズム、を説明する。制約がどのように構築されるかを説明する前に、制約施行エンジンにより使用されるデータモデルが紹介される。
本発明の実施形態は、レコードの概念に基づく「ストア非依存」モデルを採用する(定義1)。
定義1:(レコード)レコードは、以下に示すように、コンマで区切られる値のn要素タプルで構成される。
値1,値2,値3,...,値N
制約施行エンジンは、情報がデータティアに格納されている方法及び場所に係わらず(例えば、RDBMSの関係型テーブルとして、トリプルストアのグラフとして、MongoDBの文書として、等)、データをレコードと見なす。
記憶と独立しアプローチを保証するために、レコードは、論理的にデータソースに組織化される(定義2)。
定義2:(データソース)データソースは、データベース固有制約の抽象表現である(例えば、関係型テーブル、RDFグラフ、MongoDB、等)。
前述の企業−製品−顧客の例では、顧客はトリプルストアの中のグラフhttp://customersに格納され、関係型テーブルcompaniesに中の企業プロファイルは、RDBMSに含まれると仮定する(図1)。RDFグラフの中の及びテーブルの中のタプルは、制約施行エンジンによりレコードにシリアライズされる。
図3Aでは、レコードは、RDFグラフhttp://customersの抽象表現であるCustomersと名付けられたデータソースに関連付けられる。例示的なレコードの中の各々のカンマで区切られた値は、RDF述語の目的語に対応する(例えば、John Doeは述語foaf:nameの目的語である)。
図3Bで、レコードの中の各々のカンマで区切られた値は、関係型テーブルに格納された属性に対応する。レコードは、Companiesと名付けられたデータソースに関連付けられる。データソースは、関係型テーブルcompaniesの抽象表現である。
各々のデータソースは、データ制約をモデル化するエンティティであるレコードシェイプに関連付けられる(定義3)。
定義3:(レコードシェイプ)レコードシェイプは、各々のレコードがどのように構造化されなければならないかを決定するデータ制約セットである。レコードシェイプに含まれる制約は、レコードフィールドに関連付けられ、以下に関する情報を含む。
・データ型
・濃度(cardinality)(つまり、存在する要素の数)
・フィールドフォーマット
レコードシェイプは、多言語データティアに責任を持つデータ設計者又はバックエンド開発者により手動で作成される。
レコードシェイプは、宣言型アプローチに従う。それらは、RDFで表され、レコードシェイプ語彙である軽量なRDFS/OWLオントロジでモデル化される。本発明は、既存のオントロジ(例えばOSLC、QUDT)のクラス及びプロパティを再利用し拡張するリンク付きデータ理念を採用するが、既存の研究とは異なり、データモデル非依存型の方法で制約をモデル化する語彙が用いられる。この選択は、多言語データストアのサポートを保証する。
さらに、RDFS/OWL語彙が設計により拡張できるので、このようなオントロジに基づくアプローチは、拡張可能なデータ制約を保証する。したがって、直接的なモデル追加は、後方互換性を妥協することなく、予期しないデータモデル、データ型、データフォーマット、又は測定単位を有するデータストアをサポートする。
図4は、語彙の主なクラス及びプロパティを示す。以下は、語彙要素の詳細な説明である。
クラス(Classes)
・レコード(Record)。アトミックな意味のあるデータ単位を表す。
・データソース(DataSource)。レコードエンティティの抽象ソースである。RDBMSのテーブル、トリプルストアのRDF名付きグラフ、CSVファイル、MongoDB文書、Cassandraテーブル、等を有する。
・シェイプ(Shape)。データソース又はレコードを記述するレコードシェイプ。スロットのコンテナを有する。
・スロット(Slot)。スロットは、1又は複数のフィールドのラッパーを有する。
・フィールド(Field)。フィールドは、レコードのコンマで区切られた要素の構造を記述する。
・qudt:単位(qudt:Unit)クラスは、QUDT語彙からインポートされ、測定単位(例えば、メートル)を表すために用いられる。
プロパティ(Properties)
・hasShape。シェイプをレコード又はデータソースに関連ける。
・フィールド(Field)。スロットをフィールドに関連付ける。
・hasSlot。スロットをシェイプに関連付ける。
・Index。レコードの中のスロットのグローバルユニークなインデックスを決定する。
・isKey。スロットがレコードのユニークな識別子であるかどうかを決定する。
・isAutoKey。レコードが「黙示的な」キーを有するかどうかを決定する。プロパティは、RDFインスタンスのために用いられる。RDFインスタンスは、それらのURIによりユニークに識別されるが、このような情報片は、黙示的RDFプロパティとして現れない。したがって、このような特徴をモデル化するプロパティが必要である。
・isServerDefaultGraph。データソースがトリプルストアの規定グラフに対応するかどうかを記述する。
・Datatype。フィールドのxsdデータ型を示す。
・format。フィールドのフォーマット情報を示す(例えば、JSON(JavaScript Object Notation)、XML、HTML、等)。このプロパティは、CLOB(Character Large Object、種々のデータベース管理システムにより用いられるデータ型)にあるフィールドのシンタックスチェックを可能にし、例えば、XML及びHTMLコンテンツが適格であることを検証し、JSONシンタックス検証を調べる、等である。留意すべきことに、サポートされるフォーマットのリストは、他の文字の大きなオブジェクトに及びバイナリオブジェクト(例えば、PDF、画像、等)に拡張される。
・unit。QUDT語彙に従い、スロットの測定単位を示す。
・vann:preferredNamespacePrefix。このプロパティは、VANN語彙に属する(VANNは、他の語彙の注釈を可能にするために考案された語彙である)。レコードシェイプ語彙では、フィールドの中で用いられる名前空間プレフィックスを示す(このようなレコードがRDFトリプルに対応する場合)。
・vann:preferredNamespaceUri。このプロパティは、VANN語彙に属する。レコードシェイプ語彙では、フィールドの中で用いられるURIを示す(このようなレコードがRDFトリプルに対応する場合)。
・oslc:occurs。このプロパティは、元来、OSLC語彙の中で現れる。これは、以下のインスタンスを参照することにより、フィールドの濃度を指定する。
・oslc:Exactly-one
・oslc:One-or-many
・oslc:Zero-or-many
・oslc:Zero-or-one
図5A及び5Bは、2つの例示的なレコードシェイプを示す。図5AはRDFグラフのシェイプであり、図5Bは関係型DBテーブルのシェイプであり(プレフィックスは省略されている)、企業−製品−顧客の例に関する。2つのレコードシェイプはそれぞれ、図4のレコードシェイプ語彙により定められる(語彙は、recshプレフィックスにより示される)。
図5Aで、シェイプは、顧客を記述するRDFグラフの構造及び制約をモデル化する。データソースCustomersは、CustShシェイプに関連付けられる(第2行)。シェイプは、3個のスロットを有する。つまり、第1のスロット(第7〜9行)は「黙示的」キーであり(第9行)、したがってフィールドを含まない。フィールドの値は、RDFリソースのユニークな識別子として機能するインスタンスのURIにより自動的に生成される(本例では、このような値はhttp://customers/1である)。第2のスロット(第11〜13行)は、顧客の名前を記述するフィールドを有する(第18〜22行)。このフィールドは、顧客の名前のRDFプロパティをモデル化するプレフィックス及び名前空間を指定する(第19〜20行)。濃度は第21行で定められ、データ型は第22行で定められる。第3のスロット(第11〜14行)は、各々の顧客の知人をモデル化する(第24〜28行)。顧客は複数の人々を知っている可能性があるので、濃度はゼロ又は多(zero or many)である(第27行)。顧客は、URIとして定義されなければならない(第28行)。
図5Bで、シェイプは、企業関係型テーブルのコンテンツをモデル化する。データソースCompaniesは、レコードシェイプCompanyShに関連付けられる(第1〜4行)。シェイプは、5個のスロットを有する(第5〜6行)。第1のスロット(第8〜11行)は、各々のタプルのユニークな識別子を特定する(第10行)。ユニークな識別子のフォーマットは、第26〜28行のフィールドにより定められる。第2のスロット及びそのフィールドは、企業の名前をモデル化する(第13〜15及び30〜32行)。第3のスロット及びそのフィールドは、企業のURIをモデル化する(第17〜18及び34〜36行)。第4のスロット−フィールド対は、設立年をモデル化する(第20〜21及び38〜40行)。留意すべきことに、本例では、フィールド型はxsd:dateである。最後のスロット−フィールド対は、企業のHTML記述をモデル化する(第23〜24及び42〜45行)。留意すべきことに、このフィールドのデ―タ型はストリングであり(第44行)、このようなストリングはHTMLシンタックスに従わなければならない(第45行)。
図6は、ソフトウェアの観点からのシステム概略である。システムは、例としてリモートクライアントからの要求を参照することにより記述される。しかし、理解すべきことに、本発明はこのような要求の内容を検証することに限定されない。本発明の実施形態は、クライアント要求に関係なく、デ―タストアからのデータ読み出しの検証、データストアの中のデータを検査すること、及びデータの発見にも適用できる。
データ制約エンジン100は、2つの主要なコンポーネント、つまりレコードシェイプカタログ110と検証器120とを有する。
シェイプカタログ110。これは、トリプルストアとして実装されるレコードシェイプレポジトリである。シェイプは、データ設計者により手動で作成され、このコンポーネントに格納される。カタログ110のお陰で、シェイプは、多言語ティアの中の各々のデータストアの内部に格納される必要がない。したがって、第三機関データストアのサポートを可能にする。データ制約エンジン100の部分として示されるが、データ制約エンジンがアクセス可能な限り、シェイプカタログ110は、勿論、リモートに格納されても良い。
検証器120。このモジュールは、シェイプに対するレコードの検証を担う。これらは以下を含む。
・スロットカウント検証器121。これは、シェイプに対してレコードスロットの数を調べる。
・濃度検証器122。これは、シェイプ濃度制約に対して各々のレコードフィールドの濃度を調べる。
・データ型検証器123。これは、レコードフィールドデータ型がシェイプデータ型に適合するかどうかを調べる。
・フォーマット検証器124。この検証器グループは、レコードシェイプの中のフォーマットプロパティにより指定されるものに従って、レコードフィールドシンタックスを調べる。
上述の検証器は、シェイプカタログ110と一緒に格納され得る検証器リストの中で定められても良い。データ制約エンジンは、例えば、HTML(検証器125)、XML(検証器126)、及びJSON(検証器127)のための内蔵シンタックス検証を提供される。留意すべきことに、サポートされるフォーマットのリストは、レコードシェイプオントロジのなかで拡張可能であり、したがって、新しいフォーマット検証器が第三機関により追加され得る。
データ制約エンジン100の前述のコンポーネントは、2つの外部モジュール、つまりAPI130及びレコードディスパッチャ140と連携して動作する。
API(又はより正確にはAPIのセット)130は、リモートクライアント30により要求される入来データ操作の処理、及び応答の構築を担うフロントエンドである。「データ操作」は、ここでは、生成、読み出し、更新、及び削除のような一般的な恒久的記憶機能を含む。例えば、HTTPに基づくAPIは、このような一般的操作をPOST(生成)、GET(読み出し)、PUT(更新)、及びDELETE(削除)にマッピングする。このようなデータ操作は、標準的に、自動的に又はユーザ入力に応答して、リモートクライアントにより実行されるアプリケーションにより生成される。
レコードディスパッチャ140は、多言語データティア20の中の正しいデータストアにレコードをルーティングし、及びそれからレコードを検索する。図6で、このデータティアは、例としてRDBMS21、トリプルストア22、MongoDB23を含むとして図示される。ドットにより示されるように、種々の更なるデータベースも、多言語データティア20に含まれても良い。
図7は、図6のデータ制約エンジン100により実行される制約施行処理のフローチャートである。
リモートクライアント30は、例えばオペランドを得る、結果を書き込む、等のために多言語データティアへのアクセスを要求するアプリケーションを動かすことにより、多言語データティアの中のデータに関するデータ操作(アクセス要求)を生成すると仮定する。多言語データティアに対するこのようなデータ操作は、制約評価をトリガする。入ってくる(又は出ていく)レコードは、カタログ110に格納されるシェイプに対して検証される。無効なレコードが検証エラーをトリガする。有効なレコードは、要求されたデータストアへ送られる(又はそれから検索される)。
リモートクライアントから入ってくるデータ操作の例に適用するとき、データ制約エンジン100により実行される制約施行処理は、以下のように動作する。
処理はステップS100で開始する。ステップS102で、API130は、データ操作を解析し(parse)、レコード及びデータソース識別子を抽出する。一方で、ステップS104で、エンジン100は、カタログ110に問い合わせ、前のステップで抽出されたデータソースに関連するレコードシェイプをフェッチする。
ステップS106で、レコードシェイプが存在するか否かが調べられる。シェイプが見付からない場合(S106で「no」)、検証手順は進むことができず、レコードは、無効とマークされる(S116)。
シェイプが見付かる(S106で「yes」)と仮定すると、S108で、シェイプのスロットの数に対してレコードのスロット数が一致するかが調べられる。不一致の場合(S108で「no」)、レコードは無効である(S116)。その他の場合(S108で「yes」)、S110で、エンジンは、シェイプの中で指定された候補に対して、各々のレコードフィールドの候補を調べる。不一致が検出された場合(S110で「no」)、レコードは無効である(S116)。
次に、S112で、データ制約エンジン100は、各々のレコードフィールドがシェイプに含まれるデータ型と一致するデータ型を有することを検証する。不一致が検出された場合(S112で「no」)、レコードは無効である(S116)。その他の場合、処理はS114へ進み、フォーマットプロパティに従って(このようなプロパティがレコードシェイプの中に存在する場合)各々のフィールドのシンタックスを調べる。固有フォーマット検証器が実行される(追加データフォーマットに対するHTML、XML、JSON、又は第三機関拡張シンタックスチェック)。シンタックス検証が成功しない場合(S114で「no」)、レコードは無効である(S116)。その他の場合、レコードは有効であり(S118)、要求されたデータストアへディスパッチされる(又はそれから検索された対応するデータである)。
例えば、「生成(Create)」操作(例えば、HTTP POST)と共に5個のレコードが多言語データティアへ送られ、それらはデータ制約エンジン100により検証される仮定する。各々の操作も、レコードに関連するデータソースの名前を制約する。
i) http://customers/1, “John Doe”, http://customers/2(レコードはデータソースCustomersに属する)
ii) http://customers/1, http://customers/2(レコードはデータソースCustomersに属する)
iii) http://customers/1, , http://customers/2(レコードはデータソースCustomersに属する)
iv) 2, “ACME inc.”, http://acme.com, 2006, “<html><head>…”(レコードはデータソースCompaniesに属する)
v) 2, “ACME inc.”, http://acme.com, 1990-11-01, “<html<head>…”(レコードはデータソースCompaniesに属する)
レコード(i)は、Customersデータソースに属する。エンジンは、このようなデータソースに関連するレコードシェイプを検索するためにカタログに問い合わせる。レコードシェイプが存在し(CustSh、図5Aを参照)、次にレコードを検証するために使用される。先ず、スロット数が調べられる。レコード(i)は、レコードシェイプCustShのような3つのコンマで区切られたスロットを有する。各々のフィールドの候補が検証される。それらは全て正しいので、エンジンは、データ型検証と共に進む。レコード(i)はURIで始まる。これは、黙示的キーの正しいデータ型である(図5A、第9行)。スロット2は、有効な値(ストリング)を有し、最後のスロットは、URIフィールドを有する。これは、シェイプと一致する。したがって、レコード(i)は有効である。
レコード(ii)は、Customersデータソースに属する。エンジンは、このようなデータソースに関連するレコードシェイプを検索するためにカタログに問い合わせる。レコードシェイプが存在し(CustSh、図5Aを参照)、次にレコードを検証するために使用される。先ず、スロット数が調べられる。レコード(ii)は、レコードシェイプCustShにより要求される3つのスロットの代わりに、2つのコンマで区切られたスロットを有する。したがって、レコード(ii)は有効ではない。
レコード(iii)は、Customersデータソースに属する。エンジンは、このようなデータソースに関連するレコードシェイプを検索するためにカタログに問い合わせる。レコードシェイプが存在し(CustSh、図5Aを参照)、次にレコードを検証するために使用される。先ず、スロット数が調べられる。レコード(iii)は、レコードシェイプCustShのような3つのコンマで区切られたスロットを有する。各々のフィールドの候補が検証される。そのレコードシェイプが正確に1つの要素が存在しなければならないと規定するにも係わらず(図5A、第21行)、第2のフィールドは空である。よって、レコード(iii)は有効ではない。
レコード(iv)は、Companiesデータソースに属する。カタログは、データソースに関連するシェイプについて問い合わせられる。1つのシェイプが見付かる(CompanySh、図5B)。スロット数チェックの後、フィールド候補が検証される。それらは正しいので、エンジンはデータ型のチェックに進む。1つのエラーが第3のフィールドで検出される(「2006」)。このような値は、xsd:dateのYYY−MM−DDフォーマットに適合しない。したがって、レコード(iv)は有効ではない。
レコード(v)は、Companiesデータソースに属する。カタログは、データソースに関連するシェイプについて問い合わせられる。1つのシェイプが見付かる(CompanySh、図5B)。スロット数チェックの後、フィールド候補が検証される。それらは正しいので、エンジンはデータ型のチェックに進む。データ型は全て正しい。CompanyShシェイプは最後のフィールドが有効なHTMLコンテンツを有しなければならないと記載する。シンタックス検証は、「<html<head>…」ストリングに対して実行される。<htmlタグが閉じられていないので、シンタックスは正しくない。したがって、レコード(v)は有効ではない。
POST操作の場合には、次に、有効であると分かったレコードは、記憶のために多言語データティアへ転送される。レコードが無効であると分かった場合、エラーメッセージが、要求の生じたリモートクライアント30へ返される。
多の種類のアクセス要求は、例えば命令が多言語データティアに渡される前に検証されるGET命令により指定されたデータと共に、同様の方法で処理され得る。
さらに、データ制約エンジンの仕様は、多言語データティアに追加される又はそれから検索されるデータを指定する入ってくるデータ操作の検証に限定されない。同様に、多言語データティアに既に格納されているデータの検証に適用され得る。
一例として、データ制約エンジンは、(GET要求に応答してのような)任意の理由で多言語データティアから読み出されるレコードを検証するために使用され得る。
別の例として、データ制約エンジンは、各々のレコードが特定のデータストアのために定義されたレコードシェイプに従うか否かを調べるために、該データストアに(又はインテグリティの疑われるその部分に)体系的に適用され得る。本例では、API130及びリモートクライアント30は、チェックを開始し、結果をリモートクライアントに報告する以外に、処理に含まれる必要がない。
データ制約エンジンがデータストアのコンテンツを発見し又はあるデータストアから別のデータストアへデータを転送するために用いられ得る別の例。
図8は、データ検証器リスト(及び/又はシェイプカタログ110)に拡張を追加する処理を示す。
データ制約エンジン100(図6)の検証器リストは、第三機関により拡張可能である。したがって、予期しないデータモデルに基づくデータストア及び追加データフォーマット(例えば、PDF、画像、等のようなバイナリオブジェクト)をサポートする。以下のステップが実行されない限り、データフォーマットに対する制約がサポートされないことに留意する。新しいデータ検証器を追加する処理は、以下のように図8に纏められる。
処理はステップS200で開始する。ステップS202で、データ制約エンジンは、レコードシェイプオントロジの現在のバージョンが更新されるか否かを調べる。検証器リストの拡張は、(例えば追加プロパティを追加することにより)オントロジ編集を必要とする場合がある。したがって、データ制約エンジンは、最新バージョンを参照しなければならない。留意すべきことに、レコードシェイプオントロジは、レコードシェイプと一緒に、カタログに格納される。レコードシェイプオントロジが古い場合(S202で「yes」)、エンジンは、S204で最新バージョンを検索するために、カタログに問い合わせる。ステップS206で、オントロジが更新されると(必要な場合)、エンジンは、任意の追加検証器(例えば、新しいレコードシェイプ)を追加することにより検証器リストを更新する。処理はステップS208で終了する。 留意すべきことに、図8に記載の手順は、ブートストラップ時間に実行される、又はシステム管理者により手動でトリガされ得る。したがって、検証器は、いつでも、データ制約エンジンにプラグインされ得る。
図9は、本発明を実施するのに適するコンピュータシステム10又はその部分を概略的に示す。コンピュータシステム10は、図6に示すデータ制約エンジン100のプログラムコードを含む種々のプログラム及びデータを格納するメモリ14を有する。メモリは、メモリに保持されるプログラムを実行するCPU12に接続される(当業者により理解されるように、CPUは実際には多くの別個のCPU又はコアであっても良い)。入力/出力部16は、コンピュータシステム10の外部のエンティティ、特にリモートクライアント30及び2つのデータベース25及び26により例示される多言語データティア20と、(インターネットのような)ネットワーク40を介して通信を実行する。
纏めると、本発明の実施形態は、多言語データティアにおける制約施行のためのストア非依存エンジンを提供できる。制約は、宣言型アプローチにより記述されるので、データストア固有制約言語が用いられない。さらに、制約は軽量なオントロジの上でモデル化されるので、拡張は自然にサポートされる。制約は、独立型レポジトリに格納され、検証エンジンにより実行時間に施行される。したがって、第三機関データストアを有する多言語データティアが自然にサポートされる。
上述の態様の何れにおいても、種々の特徴は、ハードウェアで、又は1若しくは複数のプロセッサで動作するソフトウェアモジュールとして実施されても良い。ある態様の特徴は、他の態様の特徴に適用されても良い。
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。本発明を実施するコンピュータプログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であってもよい。
上述の実施形態に加え、更に以下の付記を開示する。
(付記1) 複数の異種データストアを有する多言語データティアにおいてデータ制約を施行する方法であって、
データが格納される方法及び場所に係わらず、前記データストアの中のデータを、前記データをシリアライズするレコードと見なすステップと、
検証されるべきレコードを抽出するステップと、
前記レコードに対応するレコードシェイプを見付け、レコードの構造を決定するステップであって、各々のレコードシェイプは拡張可能語彙で表される、ステップと、
前記対応するレコードシェイプの中で定められる複数の基準の各々に対して前記レコードをチェックすることにより、前記レコードにデータ制約を適用するステップと、
全部の前記基準が満たされる場合、前記レコードを有効であると決定するステップと、
を有する方法。
(付記2) 前記レコードが有効であると決定される場合、前記データストアの中に前記レコードを作成する、データストアから前記レコードを読み出す、前記レコードを用いてデータストアを更新する、及びデータストアからレコードを削除する、のうちの1又は複数を含む操作を前記レコードに対して実行するステップ、を更に有する請求項1に記載の方法。
(付記3) 指定データを含む要求を受信するステップと、前記指定データに基づき検証されるべきレコードを抽出するステップと、を更に有する請求項1又は2に記載の方法。
(付記4) 前記レコードは、前記要求に含まれる、又は
前記レコードは、前記データストアのうちの1つに含まれ前記要求の中で指定される、
請求項3に記載の方法。
(付記5) 各々のデータストアを、データソース識別子を有する抽象データソースとして表すステップであって、前記要求は、前記指定データに対応するデータソース識別子を特定できる情報を含む、ステップ、を更に有する請求項3又は4に記載の方法。
(付記6) 各々のレコードは、コンマで区切られた値のn要素タプルである、請求項1乃至5のいずれか一項に記載の方法。
(付記7) 前記データストアは、
(i)トリプルストアであって、該トリプルストアの中のデータのレコードの中で、各々のコンマで区切られた値はRDF述語の目的語に対応する、トリプルストア、
(ii)RDBMSであって、該RDBMSの中のデータのレコードの中で、各々のコンマで区切られた値はテーブルに格納された属性を表す、RDBMS、
(iii)MongoDBのような文書指向型データベース、
(iv)Cassandraのような列指向型テーブルに基づくデータベース、
(v)キー値ペアに基づくデータベース、
のうちのいずれかを有する、請求項3に記載の方法。
(付記8) 新しい型のデータストアが前記多言語データティアに追加されるとき、前記データストアに格納されたデータの構造を定める新しいレコードシェイプを定めるために、前記拡張可能語彙を用いるステップ、を更に有する請求項1乃至7のいずれか一項に記載の方法。
(付記9) 各々のレコードシェイプは、レコードを形成するデータ型、濃度、及びフィールドに関する情報を含む、請求項1乃至8のいずれか一項に記載の方法。
(付記10) 各々のレコードシェイプは、RDF(Resource Description Framework)nタプルのセットであり、望ましくは前記拡張可能語彙はRDFS/OWLに基づく、請求項1乃至9のいずれか一項に記載の方法。
(付記11) 複数の異種データストアを有する多言語データティアにおいてデータ制約を施行するデータ制約エンジンであって、
データが格納される方法及び場所に係わらず、前記データストアの中のデータを、前記データをシリアライズするレコードと見なす手段と、
前記レコードを抽出する手段と、
前記の抽出されたレコードに基づき、シェイプカタログからのレコードシェイプにアクセスし、レコードの構造を決定する手段であって、各々のレコードシェイプは、拡張可能語彙で表される、手段と、
対応するレコードシェイプの中で定められる複数の基準に対して前記レコードを調べ、全部の前記基準が満たされる場合に前記レコードを有効であると決定することにより前記レコードを検証する複数の検証器と、
を有するデータ制約エンジン。
(付記12) 入ってくる要求を受信するインタフェースであって、各々の要求はデータを指定する、インタフェースを更に有し、前記抽出する手段は、前記要求の中で指定されたデータに基づき、前記レコードを抽出するよう構成される、請求項11に記載のデータ制約エンジン。
(付記13) 前記レコードが有効であると決定される場合、前記データストアの中に前記レコードを作成する、データストアから前記レコードを読み出す、前記レコードを用いてデータストアを更新する、及びデータストアからレコードを削除する、のうちの1又は複数を含む操作を前記レコードに対して実行するレコードディスパッチャ、を更に有する請求項11又は12に記載のデータ制約エンジン。
(付記14) 前記複数の検証器は、それぞれ
スロット数、
濃度、
データ型、
HTML、XML、及びJSONのうちの1又は複数のようなフォーマット、
である個々の検証器を有する、請求項11、12、又は13に記載のデータ制約エンジン。
(付記15) 各々のレコードシェイプは、RDFS/OWL語彙で表されるRDF(Resource Description Framework)トリプルである、請求項11乃至14のいずれか一項に記載のデータ制約エンジン。
(付記16) 請求項11乃至15のうちのいずれか一項に記載のデータ制約エンジンとして機能するよう構成されるコンピューティング装置。
(付記17) コンピューティング装置により実行されると、前記コンピューティング装置に請求項16に記載のコンピューティング装置として動作させる、コンピュータプログラム。
レコードシェイプ及びレコードに基づく統一データモデルに依存することにより、本発明は、データ制約を施行するストア非依存アプローチを可能にし、データベース固有の制約言語から開発者を解放する。したがって、多言語データティアのシナリオに適合する。さらに、レコードシェイプは習慣的なRDFトリプルなので、開発者は、新しい制約定義言語を学習する必要がない。RDFS/OWLに基づくオントロジの使用は、予期しないデータモデル及び型を扱うために、新しいレコードシェイプを追加することを容易にし、アプリケーションレベルの検証コードの必要性を低減又は除去する。したがって、本発明は、プログラミング労力の低減に貢献する。
20 データティア
21 RDBMS
22 トリプルストア
23 MongoDB
30 リモートクライアント
100 検証器
110 シェイブカタログ
121 スロット数検証器
122 濃度検証器
123 データ型検証器
124 フォーマット検証器
125 HTML検証器
126 XML検証器
127 JSON検証器
130API
140 レコードディスパッチャ

Claims (17)

  1. 複数の異種データストアを有する多言語データティアにおいてデータ制約を施行するコンピュータの作動方法であって、
    前記複数の異種データストアのうちの1つに格納されたデータをシリアライズすることにより、データストアの種類に依存しない共通形式のレコードを生成するステップと、
    前記レコードを抽出するステップと、
    前記レコードに対応するレコードシェイプを見付けるステップであって、各々のレコードシェイプは、オントロジで表され、レコードの構造を決定する、ステップと、
    前記対応するレコードシェイプの中で定められる複数の基準の各々に対して前記レコードをチェックすることにより、前記レコードにデータ制約を適用するステップと、
    前記チェックの結果に応じて、前記レコードの有効又は無効を制御するステップと、
    を有する方法。
  2. 前記制御するステップにおいて前記レコードが有効とされた場合、前記データストアの中に前記レコードを作成する、前記データストアから前記レコードを読み出す、前記レコードを用いて前記データストアを更新する、及び前記データストアから前記レコードを削除する、のうちの1又は複数を含む操作を前記レコードに対して実行するステップ、を更に有する請求項1に記載の方法。
  3. 指定データを含む要求を受信するステップと、前記指定データに基づき検証されるべきレコードを抽出するステップと、を更に有する請求項1又は2に記載の方法。
  4. 前記レコードは、前記要求に含まれる、又は
    前記レコードは、前記データストアのうちの1つに含まれ前記要求の中で指定される、
    請求項3に記載の方法。
  5. 各々のデータストアを、データソース識別子を有する抽象データソースとして表すステップであって、前記要求は、前記指定データに対応するデータソース識別子を特定できる情報を含む、ステップ、を更に有する請求項3又は4に記載の方法。
  6. 各々のレコードは、コンマで区切られた値のn要素タプルであり、nは零より大きい非負整数である、請求項1乃至5のいずれか一項に記載の方法。
  7. 前記データストアは、
    (i)トリプルストアであって、該トリプルストアの中のデータのレコードの中で、各々のコンマで区切られた値はRDF述語の目的語に対応する、トリプルストア、
    (ii)RDBMSであって、該RDBMSの中のデータのレコードの中で、各々のコンマで区切られた値はテーブルに格納された属性を表す、RDBMS、
    (iii)文書指向型データベース、
    (iv)列指向型テーブルに基づくデータベース、
    (v)キー値ペアに基づくデータベース、
    のうちのいずれかを有する、請求項3に記載の方法。
  8. 新しい型のデータストアが前記多言語データティアに追加されるとき、前記データストアに格納されたデータの構造を定める新しいレコードシェイプを定めるために、前記オントロジを用いるステップ、を更に有する請求項1乃至7のいずれか一項に記載の方法。
  9. 各々のレコードシェイプは、レコードのデータ型、濃度、及びフィールドフォーマットに関する情報を含む、請求項1乃至8のいずれか一項に記載の方法。
  10. 各々のレコードシェイプは、RDF(Resource Description Framework)n要素タプルのセットであり、nは零より大きい非負整数であり、前記オントロジはRDFS/OWLに基づく、請求項1乃至9のいずれか一項に記載の方法。
  11. 複数の異種データストアを有する多言語データティアにおいてデータ制約を施行するデータ制約エンジンであって、
    前記複数の異種データストアのうちの1つに格納されたデータをシリアライズすることにより、データストアの種類に依存しない共通形式のレコードを生成する手段と、
    前記レコードを抽出する手段と、
    前記の抽出されたレコードに基づき、シェイプカタログからのレコードシェイプにアクセスする手段であって、各々のレコードシェイプは、オントロジで表され、レコードの構造を決定する、手段と、
    対応するレコードシェイプの中で定められる複数の基準に対して前記レコードをチェックし、前記チェックの結果に応じて前記レコードの有効又は無効を制御する複数の検証器と、
    を有するデータ制約エンジン。
  12. 入ってくる要求を受信するインタフェースであって、各々の要求はデータを指定する、インタフェースを更に有し、前記抽出する手段は、前記要求の中で指定されたデータに基づき、前記レコードを抽出するよう構成される、請求項11に記載のデータ制約エンジン。
  13. 前記検証器により前記レコードが有効とされた場合、前記データストアの中に前記レコードを作成する、前記データストアから前記レコードを読み出す、前記レコードを用いて前記データストアを更新する、及び前記データストアから前記レコードを削除する、のうちの1又は複数を含む操作を前記レコードに対して実行するレコードディスパッチャ、を更に有する請求項11又は12に記載のデータ制約エンジン。
  14. 前記複数の検証器は、それぞれ
    スロット数、
    濃度、
    データ型、
    HTML、XML、及びJSONのうちの1又は複数のようなフォーマット、
    である個々の検証器を有する、請求項11、12、又は13に記載のデータ制約エンジン。
  15. 各々のレコードシェイプは、RDFS/OWL語彙で表されるRDF(Resource Description Framework)トリプルである、請求項11乃至14のいずれか一項に記載のデータ制約エンジン。
  16. 請求項11乃至15のうちのいずれか一項に記載のデータ制約エンジンとして機能するよう構成されるコンピューティング装置。
  17. コンピューティング装置により実行されると、前記コンピューティング装置に請求項16に記載のコンピューティング装置として動作させる、コンピュータプログラム。
JP2016068461A 2015-04-29 2016-03-30 多言語データティアのデータ制約 Active JP6720641B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1507301.8 2015-04-29
GB1507301.8A GB2537873A (en) 2015-04-29 2015-04-29 Data constraints for polyglot data tiers
EP16153241.1 2016-01-28
EP16153241.1A EP3089054A1 (en) 2015-04-29 2016-01-28 Data constraints for polyglot data tiers

Publications (2)

Publication Number Publication Date
JP2016212839A JP2016212839A (ja) 2016-12-15
JP6720641B2 true JP6720641B2 (ja) 2020-07-08

Family

ID=53488850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016068461A Active JP6720641B2 (ja) 2015-04-29 2016-03-30 多言語データティアのデータ制約

Country Status (4)

Country Link
US (1) US20160321277A1 (ja)
EP (1) EP3089054A1 (ja)
JP (1) JP6720641B2 (ja)
GB (1) GB2537873A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243938B2 (en) * 2016-05-31 2022-02-08 Micro Focus Llc Identifying data constraints in applications and databases
US10606825B1 (en) * 2017-02-28 2020-03-31 Synack, Inc. Flexible installation of data type validation instructions for security data for analytics applications
US11036725B2 (en) 2017-08-14 2021-06-15 Science Applications International Corporation System and method for computerized data processing, analysis and display
CN108776587B (zh) * 2018-05-25 2020-07-17 平安科技(深圳)有限公司 数据获取方法、装置、计算机设备以及存储介质
US11468339B2 (en) * 2018-06-29 2022-10-11 Sap Se Agnostic data structure for debriefing predictive software
US11477217B2 (en) * 2018-09-18 2022-10-18 Cyral Inc. Intruder detection for a network
US11470084B2 (en) 2018-09-18 2022-10-11 Cyral Inc. Query analysis using a protective layer at the data source
US11477197B2 (en) 2018-09-18 2022-10-18 Cyral Inc. Sidecar architecture for stateless proxying to databases
EP4040308A4 (en) * 2019-10-01 2022-10-05 Fujitsu Limited LEARNING METHOD, LEARNING DEVICE, LEARNING PROGRAM, PREDICTING METHOD, PREDICTING DEVICE, AND PREDICTING PROGRAM
CN111143621A (zh) * 2019-11-19 2020-05-12 京东数字科技控股有限公司 一种数据审核方法、装置及数据处理***
CN112347085B (zh) * 2020-07-12 2021-11-09 吴伟 一种指标式数值型金融时间序列数据校核方法
US20230418800A1 (en) * 2022-06-02 2023-12-28 Barcelona Supercomputing Center-Centro Nacional De Supercomputación Method for optimizing the management of a flow of data

Also Published As

Publication number Publication date
EP3089054A1 (en) 2016-11-02
JP2016212839A (ja) 2016-12-15
GB2537873A (en) 2016-11-02
GB201507301D0 (en) 2015-06-10
US20160321277A1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
JP6720641B2 (ja) 多言語データティアのデータ制約
US10970270B2 (en) Unified data organization for multi-model distributed databases
Curé et al. RDF database systems: triples storage and SPARQL query processing
Dimou et al. Assessing and refining mappingsto rdf to improve dataset quality
Bikakis et al. The XML and semantic web worlds: technologies, interoperability and integration: a survey of the state of the art
US11816102B2 (en) Natural language query translation based on query graphs
US20190370290A1 (en) Querying a data source on a network
US8615526B2 (en) Markup language based query and file generation
US20120150922A1 (en) Extensible rdf databases
US20130086100A1 (en) Method and System Providing Document Semantic Validation and Reporting of Schema Violations
BRPI0708827A2 (pt) linguagem de consulta extensÍvel com suporte para tipos de dados ricos
US8880506B2 (en) Leveraging structured XML index data for evaluating database queries
US20160314212A1 (en) Query mediator, a method of querying a polyglot data tier and a computer program execuatable to carry out a method of querying a polyglot data tier
US10489024B2 (en) UI rendering based on adaptive label text infrastructure
US11726999B1 (en) Obtaining inferences to perform access requests at a non-relational database system
Koupil et al. A universal approach for multi-model schema inference
Michel et al. Bridging the semantic web and NoSQL worlds: generic SPARQL query translation and application to MongoDB
GB2544281A (en) Method and system for data validation in knowledge extraction apparatus
Fischer et al. Translating SPARQL and SQL to XQuery
US11100286B2 (en) Methods and systems for implied graph patterns in property chains
Unbehauen et al. SPARQL update queries over R2RML mapped data sources
US20180373698A1 (en) Methods and systems for using implied properties to make a controlled-english modelling language more natural
US20240202191A1 (en) Unified query engine for graph and relational data
Mathur Automatic Generation of Relational to Ontology Mapping Correspondences
JP2016184400A (ja) データのファイルをアップデートするコンピュータ装置、方法、及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200601

R150 Certificate of patent or registration of utility model

Ref document number: 6720641

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150