(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムであって、
階層に従って関連付けられる複数のエンティティを表すエンティティデータを記憶するデータストレージシステムであって、少なくとも１つのルートエンティティが、前記階層の最も高いレベルにあり、１又は２以上のエンティティが、前記階層の前記最も高いレベル未満の１又は２以上のレベルにあり、前記ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及び前記インスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、データストレージシステムと、
１又は２以上の引数の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを受け取るための入力デバイス又はポートであって、前記引数の１又は２以上が、前記エンティティデータ内に表されたエンティティの属性を参照する、入力デバイス又はポートと、
前記入力データに含まれる前記式を処理するように構成された少なくとも１つのプロセッサであって、前記処理することが、
式を分析して、前記式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）前記属性のエンティティの前記階層内の位置、及び（２）前記属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定することであって、前記式を分析することが、前記式が２若しくは３以上の属性を含む時に、それぞれの引数によって参照される２又は３以上の属性の各々に関して、前記２若しくは３以上の属性の各々のエンティティの階層内の位置を決定することと、前記２若しくは３以上の属性の決定された位置を比較することと、前記位置のそれぞれの引数に適用されている前記関数に関連する前記決定された位置の少なくとも２つの間の不一致に応答してエラーを示すこととを含む、決定すること、及び
前記式を分析した結果に基づいて前記式を評価するか又はエラーを示すことを含む、少なくとも１つのプロセッサとを含む、前記コンピューティングシステム。
【請求項２】
入力データが、エンティティデータ内に表された第１のエンティティの第１の属性の１又は２以上の要素の値を定義する第１の式を含む請求項１に記載のコンピューティングシステム。
【請求項３】
第１の式が、エンティティデータ内に表された第２のエンティティの第２の属性を参照して第１の属性の１又は２以上の要素の値を定義する請求項２に記載のコンピューティングシステム。
【請求項４】
トランザクション処理システムを含む請求項３に記載のコンピューティングシステム。
【請求項５】
第１のエンティティが、トランザクション処理システムにおける異なる購入に対応するインスタンスを有し、第２のエンティティが、前記トランザクション処理システムにおける異なる顧客に対応するインスタンスを有する請求項４に記載のコンピューティングシステム。
【請求項６】
処理することが、第１の式を評価した後、第１の属性の１又は２以上の要素の値を表すようにエンティティデータを更新することをさらに含む請求項２に記載のコンピューティングシステム。
【請求項７】
少なくとも１つの式内の少なくとも１つの関数が、２又は３以上のオペランドに対して働く１又は２以上の演算子を含み、前記オペランドのうちの２又は３以上が、記憶されたデータによって表されるエンティティの属性を参照する請求項１に記載のコンピューティングシステム。
【請求項８】
式を分析することが、参照される属性がただ１つのベクトル値の参照される属性及び１又は２以上のスカラ値の参照される属性を含むと決定することをさらに含み、前記式を評価することが、前記ベクトル値の参照される属性のあらゆる要素のために前記スカラ値の参照される属性を複製することを含む請求項７に記載のコンピューティングシステム。
【請求項９】
式を分析することが、参照される属性が複数のベクトル値の参照される属性を含むと決定することと、前記ベクトル値の参照される属性の２又は３以上の階層内のそれぞれの位置を比較することとをさらに含む請求項７に記載のコンピューティングシステム。
【請求項１０】
処理することが、ベクトル値の参照される属性の２又は３以上が階層内の異なるそれぞれの位置を有することに基づいてエラーを示すことを含む請求項７に記載のコンピューティングシステム。
【請求項１１】
属性のエンティティの階層内の位置を決定することが、ルートエンティティから始まる親−子関係によって関連付けられるエンティティの連鎖の中を通る前記属性の前記エンティティまでのパスに基づく前記属性に関するコンテキストを決定することを含む請求項１に記載のコンピューティングシステム。
【請求項１２】
式を分析することが、前記式の引数によって参照される少なくとも第１の属性に関して、第１のエンティティの先祖であるエンティティの第２の属性のコンテキストを昇格させることを含む昇格手順を実行することをさらに含み、前記第２の属性が、前記式の引数によって参照され、前記第２の属性の前記コンテキストを昇格させることが、前記第１の属性のコンテキストによって前記第２の属性の前記コンテキストを置き換えることを含む請求項１１に記載のコンピューティングシステム。
【請求項１３】
処理することが、第１の式の第１の引数によって参照される第１の属性が前記第１の式の第２の引数によって参照される第２の属性と異なるコンテキストを有することに基づいてエラーを示すことを含む請求項１１に記載のコンピューティングシステム。
【請求項１４】
式を分析することが、引数によって参照される１又は２以上の属性の各々に関して、前記属性を参照する引数に適用される関数の結果の要素の数を決定することを含む請求項１に記載のコンピューティングシステム。
【請求項１５】
式を分析することが、集約関数の引数によって参照される少なくとも第１の属性に関して、前記集約関数の結果の要素の数を決定することと、前記第１の属性のエンティティに関してスカラ値に対応しない結果に応答して、結果が前記第１の属性の前記エンティティに関してスカラ値に対応するまで前記集約関数の適用を１又は２回以上繰り返すこととを含む請求項１４に記載のコンピューティングシステム。
【請求項１６】
方法であって、
コンピューティングシステムによって、階層に従って関連付けられる複数のエンティティを表すエンティティデータをデータストレージシステムに記憶するステップであって、少なくとも１つのルートエンティティが、前記階層の最も高いレベルにあり、１又は２以上のエンティティが、前記階層の前記最も高いレベル未満の１又は２以上のレベルにあり、前記ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及び前記インスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、ステップと、
前記コンピューティングシステムによって、１又は２以上の引数の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを入力デバイス又はポートを介して受け取るステップであって、前記引数の１又は２以上が、前記エンティティデータ内に表されたエンティティの属性を参照する、ステップと、
前記コンピューティングシステムによって、前記入力データに含まれる前記式を少なくとも１つのプロセッサを使用して処理するステップであって、
前記コンピューティングシステムによって、式を分析して、前記式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）前記属性のエンティティの前記階層内の位置、及び（２）前記属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定するステップであって、前記式を分析することが、前記式が２若しくは３以上の属性を含む時に、それぞれの引数によって参照される２又は３以上の属性の各々に関して、前記２若しくは３以上の属性の各々のエンティティの階層内の位置を決定することと、前記２若しくは３以上の属性の決定された位置を比較することと、前記位置のそれぞれの引数に適用されている前記関数に関連する前記決定された位置の少なくとも２つの間の不一致に応答してエラーを示すこととを含む、ステップと、
前記コンピューティングシステムによって、前記式を分析した結果に基づいて前記式を評価するか又はエラーを示すことを含む、ステップとを含む、前記方法。
【請求項１７】
コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
階層に従って関連付けられる複数のエンティティを表すエンティティデータをデータストレージシステムに記憶することであって、少なくとも１つのルートエンティティが、前記階層の最も高いレベルにあり、１又は２以上のエンティティが、前記階層の前記最も高いレベル未満の１又は２以上のレベルにあり、前記ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及び前記インスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、記憶することと、
１又は２以上の引数の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを入力デバイス又はポートを介して受け取ることであって、前記引数の１又は２以上が、前記エンティティデータ内に表されたエンティティの属性を参照する、受け取ることと、
前記入力データに含まれる前記式を少なくとも１つのプロセッサを使用して処理することであって、
式を分析して、前記式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）前記属性のエンティティの前記階層内の位置、及び（２）前記属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定することであって、前記式を分析することが、前記式が２若しくは３以上の属性を含む時に、それぞれの引数によって参照される２又は３以上の属性の各々に関して、前記２若しくは３以上の属性の各々のエンティティの階層内の位置を決定することと、前記２若しくは３以上の属性の決定された位置を比較することと、前記位置のそれぞれの引数に適用されている関数に関連する前記決定された位置の少なくとも２つの間の不一致に応答してエラーを示すこととを含む、決定すること、及び
前記式を分析した結果に基づいて前記式を評価するか又はエラーを示すことを含む、処理することとを行わせるための命令を含む、前記ソフトウェア。
【請求項１８】
入力データが、エンティティデータ内に表された第１のエンティティの第１の属性の１又は２以上の要素の値を定義する第１の式を含む、請求項１６に記載の方法。
【請求項１９】
第１の式が、エンティティデータ内に表された第２のエンティティの第２の属性を参照して第１の属性の１又は２以上の要素の値を定義する、請求項１８に記載の方法。
【請求項２０】
コンピューティングシステムが、トランザクション処理システムを含む、請求項１９に記載の方法。
【請求項２１】
第１のエンティティが、トランザクション処理システムにおける異なる購入に対応するインスタンスを有し、第２のエンティティが、前記トランザクション処理システムにおける異なる顧客に対応するインスタンスを有する、請求項２０に記載の方法。
【請求項２２】
処理することが、第１の式を評価した後、第１の属性の１又は２以上の要素の値を表すようにエンティティデータを更新することをさらに含む、請求項１８に記載の方法。
【請求項２３】
少なくとも１つの式内の少なくとも１つの関数が、２又は３以上のオペランドに対して働く１又は２以上の演算子を含み、前記オペランドのうちの２又は３以上が、記憶されたデータによって表されるエンティティの属性を参照する、請求項１６に記載の方法。
【請求項２４】
式を分析することが、参照される属性がただ１つのベクトル値の参照される属性及び１又は２以上のスカラ値の参照される属性を含むと決定することをさらに含み、前記式を評価することが、前記ベクトル値の参照される属性のあらゆる要素のために前記スカラ値の参照される属性を複製することを含む、請求項２３に記載の方法。
【請求項２５】
式を分析することが、参照される属性が複数のベクトル値の参照される属性を含むと決定することと、前記ベクトル値の参照される属性の２又は３以上の階層内のそれぞれの位置を比較することとをさらに含む、請求項２３に記載の方法。
【請求項２６】
処理することが、ベクトル値の参照される属性の２又は３以上が階層内の異なるそれぞれの位置を有することに基づいてエラーを示すことを含む、請求項２３に記載の方法。
【請求項２７】
属性のエンティティの階層内の位置を決定することが、ルートエンティティから始まる親−子関係によって関連付けられるエンティティの連鎖の中を通る前記属性のエンティティまでのパスに基づく前記属性に関するコンテキストを決定することを含む、請求項１６に記載の方法。
【請求項２８】
式を分析することが、前記式の引数によって参照される少なくとも第１の属性に関して、第１のエンティティの先祖であるエンティティの第２の属性のコンテキストを昇格させる（promote）ことを含む昇格（promotion）手順を実行することをさらに含み、前記第２の属性が、前記式の引数によって参照され、前記第２の属性のコンテキストを昇格させることが、前記第１の属性のコンテキストによって前記第２の属性のコンテキストを置き換えることを含む、請求項２７に記載の方法。
【請求項２９】
処理することが、第１の式の第１の引数によって参照される第１の属性が第１の式の第２の引数によって参照される第２の属性と異なるコンテキストを有することに基づいてエラーを示すことを含む、請求項２７に記載の方法。
【請求項３０】
式を分析することが、引数によって参照される１又は２以上の属性の各々に関して、前記属性を参照する引数に適用される関数の結果の要素の数を決定することを含む、請求項１６に記載の方法。
【請求項３１】
式を分析することは、集約関数の引数によって参照される少なくとも第１の属性に関して、前記集約関数の結果の要素の数を決定することと、前記第１の属性のエンティティに関してスカラ値に対応しない結果に応答して、結果が前記前記第１の属性のエンティティに関してスカラ値に対応するまで前記集約関数の適用を１又は２回以上繰り返すこととを含む、請求項３０に記載の方法。
【請求項３２】
入力データが、エンティティデータ内に表された第１のエンティティの第１の属性の１又は２以上の要素の値を定義する第１の式を含む、請求項１７に記載のソフトウェア。
【請求項３３】
第１の式が、エンティティデータ内に表された第２のエンティティの第２の属性を参照して第１の属性の１又は２以上の要素の値を定義する、請求項３２に記載のソフトウェア。
【請求項３４】
コンピューティングシステムが、トランザクション処理システムを含む、請求項３３に記載のソフトウェア。
【請求項３５】
第１のエンティティが、トランザクション処理システムにおける異なる購入に対応するインスタンスを有し、第２のエンティティが、前記トランザクション処理システムにおける異なる顧客に対応するインスタンスを有する、請求項３４に記載のソフトウェア。
【請求項３６】
コンピューティングシステムに処理させるための命令が、前記コンピューティングシステムにさらに、第１の式を評価した後、第１の属性の１又は２以上の要素の値を表すようにエンティティデータを更新させる１又は２以上の命令をさらに含む、請求項３２に記載のソフトウェア。
【請求項３７】
少なくとも１つの式内の少なくとも１つの関数が、２又は３以上のオペランドに対して働く１又は２以上の演算子を含み、前記オペランドのうちの２又は３以上が、記憶されたデータによって表されるエンティティの属性を参照する、請求項１７に記載のソフトウェア。
【請求項３８】
コンピューティングシステムに式を分析させるための命令が、前記コンピューティングシステムにさらに、参照される属性がただ１つのベクトル値の参照される属性及び１又は２以上のスカラ値の参照される属性を含むと決定させるための１又は２以上の命令をさらに含み、
前記式を評価することが、前記ベクトル値の参照される属性のあらゆる要素のために前記スカラ値の参照される属性を複製することを含む、請求項３７に記載のソフトウェア。
【請求項３９】
コンピューティングシステムに式を分析させるための命令が、前記コンピューティングシステムに、参照される属性が複数のベクトル値の参照される属性を含むと決定することと、ベクトル値の参照される属性の２又は３以上の階層内のそれぞれの位置を比較することとをさらにさせるための１又は２以上の命令をさらに含む、請求項３７に記載のソフトウェア。
【請求項４０】
コンピューティングシステムに処理させるための命令が、前記コンピューティングシステムにさらに、ベクトル値の参照される属性の２又は３以上が階層内の異なるそれぞれの位置を有することに基づいてエラーを示させるための１又は２以上の命令を含む、請求項３７に記載のソフトウェア。
【請求項４１】
コンピューティングシステムに属性のエンティティの階層内の位置を決定させるための命令が、前記コンピューティングシステムにルートエンティティから始まる親−子関係によって関連付けられるエンティティの連鎖の中を通る前記属性の前記エンティティまでのパスに基づく前記属性に関するコンテキストを決定させるための１又は２以上の命令を含む、請求項１７に記載のソフトウェア。
【請求項４２】
コンピューティングシステムに式を分析させるための命令が、前記コンピューティングシステムに、前記式の引数によって参照される少なくとも第１の属性に関して、第１のエンティティの先祖であるエンティティの第２の属性のコンテキストを昇格させる（promote）ことを含む昇格（promotion）手順を実行させるための１又は２以上の命令をさらに含み、第２の属性が、前記式の引数によって参照され、前記第２の属性のコンテキストを昇格させることが、前記第１の属性のコンテキストによって前記第２の属性のコンテキストを置き換えることを含む、請求項４１に記載のソフトウェア。
【請求項４３】
コンピューティングシステムに処理させるための命令が、前記コンピューティングシステムに第１の式の第１の引数によって参照される第１の属性が前記第１の式の第２の引数によって参照される第２の属性と異なるコンテキストを有することに基づいてエラーを示させるための１又は２以上の命令を含む、請求項４１に記載のソフトウェア。
【請求項４４】
コンピューティングシステムに式を分析させるための命令が、前記コンピューティングシステムに、引数によって参照される１又は２以上の属性の各々に関して、前記属性を参照する引数に適用される関数の結果の要素の数を決定させるための１又は２以上の命令を含む、請求項１７に記載のソフトウェア。
【請求項４５】
コンピューティングシステムに式を分析させるための命令が、前記コンピューティングシステムに、集約関数の引数によって参照される少なくとも第１の属性に関して、前記集約関数の結果の要素の数を決定させることと、前記第１の属性のエンティティに関してスカラ値に対応しない結果に応答して、結果が前記第１の属性の前記エンティティに関してスカラ値に対応するまで前記集約関数の適用を１又は２回以上繰り返させるための１又は２以上の命令を含む、請求項４４に記載のソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年９月３日に出願した米国特許出願第６２／０４５，１０８号明細書の優先権を主張するものである。
【０００２】
この説明は、階層的なエンティティのための計算を管理することに関する。
【背景技術】
【０００３】
コンピューティング環境内のさまざまなエンティティが複数の値を有するデータを表すことができるさまざまな方法が、存在する。一部のコンピューティング環境は、一連の値がベクトルの要素としてデータ構造に記憶されるベクトルエンティティを与える。そのとき、ベクトルエンティティは、単一の記号列（symbolic string）によって式（expression）内で記号的に参照され得る。表計算などの一部のコンピューティング環境は、グリッド若しくはテーブルの行として、又はグリッド若しくはテーブル自体として、多値エンティティの明示的な視覚的表現を提供する。一部のコンピューティング環境においては、異なるエンティティが、例えば、１つのエンティティが任意の数の「子エンティティ」（又は「下位エンティティ」と呼ばれる）に関連付けられる可能性があり、所与の子エンティティがその他の子エンティティに対する「親エンティティ」である可能性がある階層的関係を互いに有する可能性がある。
【０００４】
複数のエンティティを含む計算を表す式を評価するために、コンピューティング環境は、その式が規則に則している（つまり、式がエラーを引き起こすことなく評価され得る）のか又は規則に違反している（つまり、式がエラーを引き起こすことなく評価され得ない）のかを決定する「適合性（conformability）」の概念を有する可能性がある。特に、適合性は、異なるエンティティが式内で特定の方法で操作され得るか否かを決定する可能性がある。例えば、第１のベクトルが第２のベクトルに加えられている式において、適合性は、２つのベクトルが同じ数の要素を有することを必要とする可能性がある（その場合、第２のベクトルは第１のベクトルに「適合する」）。
【発明の概要】
【課題を解決するための手段】
【０００５】
一態様においては、概して、コンピューティングシステムが、階層に従って関連付けられる複数のエンティティを表すエンティティデータを記憶するデータストレージシステムであって、少なくとも１つのルートエンティティが、階層の最も高いレベルにあり、１又は２以上のエンティティが、階層の最も高いレベル未満の１又は２以上のレベルにあり、ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及びインスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、データストレージシステムを含む。コンピューティングシステムは、１又は２以上の引数（argument）の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを受け取るための入力デバイス又はポートであって、引数の１又は２以上が、エンティティデータ内に表されたエンティティの属性を参照する、入力デバイス又はポートと、入力データに含まれる式を処理するように構成された少なくとも１つのプロセッサとをさらに含む。処理することは、式を分析して、式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）属性のエンティティの階層内の位置、及び（２）属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定すること、及び式を分析した結果に基づいて式を評価するか又はエラーを示すことを含む。
【０００６】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【０００７】
入力データは、エンティティデータ内に表された第１のエンティティの第１の属性の１又は２以上の要素の値を定義する第１の式を含む。
【０００８】
第１の式は、エンティティデータ内に表された第２のエンティティの第２の属性を参照して第１の属性の１又は２以上の要素の値を定義する。
【０００９】
コンピューティングシステムは、トランザクション処理システムを含む。
【００１０】
第１のエンティティは、トランザクション処理システムにおける異なる購入に対応するインスタンスを有し、第２のエンティティは、トランザクション処理システムにおける異なる顧客に対応するインスタンスを有する。
【００１１】
処理することは、第１の式を評価した後、第１の属性の１又は２以上の要素の値を表すようにエンティティデータを更新することをさらに含む。
【００１２】
少なくとも１つの式内の少なくとも１つの関数は、２又は３以上のオペランドに対して働く１又は２以上の演算子を含み、オペランドのうちの２又は３以上は、記憶されたデータによって表されるエンティティの属性を参照する。
【００１３】
式を分析することは、参照される属性がただ１つのベクトル値の参照される属性及び１又は２以上のスカラ値の参照される属性を含むと決定することをさらに含み、式を評価することは、ベクトル値の参照される属性のあらゆる要素のためにスカラ値の参照される属性を複製することを含む。
【００１４】
式を分析することは、参照される属性が複数のベクトル値の参照される属性を含むと決定することと、ベクトル値の参照される属性の２又は３以上の階層内のそれぞれの位置を比較することとをさらに含む。
【００１５】
処理することは、ベクトル値の参照される属性の２又は３以上が階層内の異なるそれぞれの位置を有することに基づいてエラーを示すことを含む。
【００１６】
前記属性のエンティティの階層内の位置を決定することは、ルートエンティティから始まる親−子関係によって関連付けられるエンティティの連鎖の中を通る属性のエンティティまでのパスに基づく属性に関するコンテキストを決定することを含む。
【００１７】
式を分析することは、式の引数によって参照される少なくとも第１の属性に関して、第１のエンティティの先祖であるエンティティの第２の属性のコンテキストを昇格させる（promote）ことを含む昇格（promotion）手順を実行することをさらに含み、第２の属性は、式の引数によって参照され、第２の属性のコンテキストを昇格させることは、第１の属性のコンテキストによって第２の属性のコンテキストを置き換えることを含む。
【００１８】
処理することは、第１の式の第１の引数によって参照される第１の属性が第１の式の第２の引数によって参照される第２の属性と異なるコンテキストを有することに基づいてエラーを示すことを含む。
【００１９】
式を分析することは、それぞれの引数によって参照される２又は３以上の属性の各々に関して、属性のエンティティの階層内の位置を決定することを含む。
【００２０】
式を分析することは、決定された位置を比較することと、位置のそれぞれの引数に適用されている関数に関連する決定された位置の少なくとも２つの間の不一致（incompatibility）に応答してエラーを示すこととを含む。
【００２１】
式を分析することは、引数によって参照される１又は２以上の属性の各々に関して、属性を参照する引数に適用される関数の結果の要素の数を決定することを含む。
【００２２】
式を分析することは、集約関数の引数によって参照される少なくとも第１の属性に関して、集約関数の結果の要素の数を決定することと、第１の属性のエンティティに関してスカラ値に対応しない結果に応答して、結果が第１の属性のエンティティに関してスカラ値に対応するまで集約関数の適用を１又は２回以上繰り返すこととを含む。
【００２３】
別の態様においては、概して、方法が、階層に従って関連付けられる複数のエンティティを表すエンティティデータをデータストレージシステムに記憶するステップであって、少なくとも１つのルートエンティティが、階層の最も高いレベルにあり、１又は２以上のエンティティが、階層の最も高いレベル未満の１又は２以上のレベルにあり、ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及びインスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、ステップを含む。方法は、１又は２以上の引数の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを入力デバイス又はポートを介して受け取るステップであって、引数の１又は２以上が、エンティティデータ内に表されたエンティティの属性を参照する、ステップと、入力データに含まれる式を少なくとも１つのプロセッサを使用して処理するステップとをさらに含む。処理するステップは、式を分析して、式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）属性のエンティティの階層内の位置、及び（２）属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定すること、及び式を分析した結果に基づいて式を評価するか又はエラーを示すことを含む。
【００２４】
別の態様においては、概して、ソフトウェアが、コンピュータ可読媒体に非一時的形態で記憶される。ソフトウェアは、コンピューティングシステムに、階層に従って関連付けられる複数のエンティティを表すエンティティデータをデータストレージシステムに記憶することであって、少なくとも１つのルートエンティティが、階層の最も高いレベルにあり、１又は２以上のエンティティが、階層の最も高いレベル未満の１又は２以上のレベルにあり、ルートエンティティよりも低いレベルの各エンティティが、単一のエンティティの子エンティティであり、１又は２以上のエンティティが、それぞれ、複数のインスタンス、及びインスタンスの各々に関するそれぞれの要素を有する少なくとも１つの属性を有する、記憶することを行わせるための命令を含む。ソフトウェアは、コンピューティングシステムに、１又は２以上の引数の１又は２以上の関数をそれぞれが表現する１又は２以上の式を含む入力データを入力デバイス又はポートを介して受け取ることであって、引数の１又は２以上が、エンティティデータ内に表されたエンティティの属性を参照する、受け取ることと、入力データに含まれる式を少なくとも１つのプロセッサを使用して処理することとを行わせるための命令をさらに含む。処理することは、式を分析して、式の引数によって参照される１若しくは２以上の属性の各々に関して、（１）属性のエンティティの階層内の位置、及び（２）属性を参照する引数に適用された関数の結果の要素の数のうちの少なくとも１つを決定すること、及び式を分析した結果に基づいて式を評価するか又はエラーを示すことを含む。
【００２５】
態様は、以下の利点のうちの１又は２以上を含む可能性がある。
【００２６】
計算を管理するための技術は、階層的なエンティティ（つまり、異なるエンティティは階層に従って互いに関連付けられる）に対する計算を表す式を定義し、評価する際の効率及び柔軟性を与える。概して、階層は、頂点がエンティティを表し、辺がエンティティの間の関係を表す、有向辺によって接続された頂点のグラフ（例えば、有向非循環グラフ（ＤＡＧ，directed acyclic graph））として表され得る。各頂点は、階層の特定のレベルにある。少なくとも１つのエンティティ（例えば、階層が木構造を有する場合の「ルートエンティティ」）が、階層の最も高いレベルにあり、１又は２以上のエンティティが、階層の最も高いレベル未満の１又は２以上のレベルにある。最も高いレベル未満のレベルの各エンティティは、単一の親エンティティの子エンティティである。いかなる子エンティティも持たないエンティティは、「葉エンティティ」である。ルートから同じ数の世代を有するエンティティは、階層の同じレベルにあると考えられ得る。一部の実装形態において、エンティティは、それらのエンティティが「兄弟」である（つまり、同じ親エンティティを有する）場合、階層の同じレベルにあるとしか考えられない。概して、本明細書において使用されるとき、より高いレベルのエンティティは、より低いレベルのエンティティよりもルートエンティティに近い。（代替的に、等価な説明において、ルートエンティティが、階層の最も低いレベルにあると考えられる可能性があり、用語「より高い」及び「より低い」が、より低いレベルのエンティティがより高いレベルのエンティティよりもルートに近いように逆に解釈される可能性がある。）下でより詳細に説明される分析モジュールは、どんな種類の計算が実行されるべきかを決定し、階層的なエンティティの間の適合性の違反及びその他の潜在的なエラーについて式のエディタ内でフィードバックを提供するために式を効率的に分析することができる。階層的に編成されたデータを管理し、処理するコンピューティングシステムに関しては、式を定義するための効果的な構文を提供するが、潜在的に大量な結果データに影響を与える可能性があるエラーが引き起こされないことを保証するためのメカニズムも含むユーザインターフェース内で計算が効率的にプログラミングされる方法を有することが有用である。例えば、オンライン商業トランザクション処理システム（例えば、ネットワークに接続され、トランザクションを表すエンティティのインスタンスを処理するように構成されたコンピューティングシステム）は、式がさまざまな異なる種類のトランザクション値を参照することを可能にし得る。例えば、トランザクション値は、異なる購入に対応する値及び異なる顧客に対応する値、（例えば、旅行、パッケージの納品などに関する）予約に対応する値、又は価格及び関連する量に対応する値を含み得る。そのようなシステムにおいては、複雑な式を許容するのに十分なだけ柔軟であるが、結果に入り込む可能性がある微妙なエラーを検出し、防止することができる適合性の形態をサポートすることが有用である。
【００２７】
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
【図面の簡単な説明】
【００２８】
【図１】階層的なエンティティを含む計算を管理するためのコンピューティングシステムのブロック図である。
【図２Ａ−２Ｂ】エンティティを定義し、見るためのユーザインターフェースの例を示す図である。
【図３】適合性チェック手順の流れ図である。
【発明を実施するための形態】
【００２９】
図１は、計算技術が使用され得るコンピューティングシステム１００の例を示す。システム１００は、ユーザインターフェース１０４を提供する実行環境１０２を含み、ローカルストレージ１０６を有する。ユーザ１０８は、ユーザインターフェース１０４内で式を規定し、それらの式１１０の表現が、ローカルストレージ１０６に記憶される。実行環境１０２は、式１１０（又は式の一部）を分析してそれらの式が規則に則しているかどうかを決定するための分析モジュール１１２と、分析モジュール１１２によって規則に則しているものとして確認された式（又は式の一部）を評価するための評価モジュール１１４とを含む。式に含まれるのは、１又は２以上の引数の任意の数の関数である。引数の一部は、ローカルストレージ１０６、又は実行環境１０２と通信するデータストレージシステム１１６などの別のアクセス可能な場所に記憶されたエンティティデータ内に表されたエンティティの属性を参照する可能性がある。
【００３０】
実行環境１０２は、例えば、ＵＮＩＸオペレーティングシステムのバージョンなどの好適なオペレーティングシステムの制御下の１又は２以上の多目的コンピュータ上でホストされる可能性がある。例えば、実行環境１０２は、ローカルの（例えば、対称型マルチプロセッシング（ＳＭＰ，symmetric multi-processing）コンピュータなどのマルチプロセッサシステム）又はローカルに分散された（例えば、クラスタ若しくは超並列処理（ＭＰＰ，massively parallel processing）システムとして接続された複数のプロセッサか、或いは遠隔の又は遠隔に分散された（例えば、ローカルエリアネットワーク（ＬＡＮ，local area network）及び／若しくは広域ネットワーク（ＷＡＮ，wide-area network）を介して接続された複数のプロセッサ）か、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置（ＣＰＵ，central processing unit）或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含む可能性がある。
【００３１】
データストレージシステム１１６は、１若しくは２以上のストレージデバイス、又はオンラインデータストリーム若しくはオンラインサービスへの接続を含み、それらのストレージデバイス又は接続の各々は、さまざまなフォーマット（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット）のいずれかでデータを記憶又は提供し得る。データストレージシステム１１６を提供するストレージデバイスは、実行環境１０２のローカルにあり、例えば、実行環境１０２をホストするコンピュータに接続されたストレージ媒体（例えば、ハードドライブ１１８）に収容される可能性があり、又は実行環境１０２のリモートにあり、例えば、（例えば、クラウドコンピューティングインフラストラクチャによって提供される）リモート接続を介して実行環境１０２をホストするコンピュータと通信するリモートシステム（例えば、メインフレーム１２０）上でホストされる可能性がある。分析モジュール１１２による式１１０の分析、又は評価モジュール１１４による式１１０の評価は、明示的なユーザ入力又はサービス要求などのその他の形態の入力に応答して開始される可能性がある。サービス要求は、階層的なエンティティを表すエンティティデータ、又はそのようなエンティティデータへの参照を含む可能性がある。例えば、ＸＭＬで符号化されたサービス要求が、階層的エンティティデータを含む可能性があり、又はサービス要求が、データストレージシステム１１６に記憶されたエンティティデータを参照する可能性がある。
【００３２】
ローカルストレージ１０６又はデータストレージシステム１１６に記憶されたデータは、階層的なエンティティとして式内で参照され得る何らかのデータを含む。エンティティは、独立して存在することができるか又は一意に特定され得る、情報領域（information domain）における特定の種類の任意の数のアイテム（item）のコレクション（collection）の抽象化と考えられる可能性がある。例えば、「Customer」エンティティが、データベースのテーブルによって、又は（区切られたレコードを有する）ファイルとして記憶されるデータセットによって表される可能性がある。データベースのテーブル又はデータセットのファイルの個々のレコード（又は「行」）は、それぞれ、例えば、商業データを管理するシステムにおいて会社の異なる顧客を表すCustomerエンティティの異なるインスタンスを表す可能性がある。エンティティは、特定のクラスのデータオブジェクトのコレクションなどの任意のその他の種類のデータ構造によって表される可能性もあり、エンティティの異なるインスタンスは、データオブジェクトの異なるインスタンスに対応する。
【００３３】
各エンティティは、任意の数の属性を有する可能性がある。例えば、データベースのテーブルによって表されるエンティティにおいては、テーブルのフィールド（又は「列」）が、そのエンティティの特定の属性に対応する特定の種類のデータ（例えば、所定のデータ型を有する変数）を記憶するために定義される可能性がある。例えば、Customerエンティティに関するテーブルは、Customerエンティティのインスタンスに関連する値を記憶するためのフィールドを含む可能性があり、インスタンスの各々は、テーブル内の異なるレコードによって表される。エンティティの特定のインスタンスに関しては、そのインスタンスの属性のいずれかが、（スカラ値又は値のベクトル若しくは下位レコードを含む）特定の値を有する可能性があり、或いはヌル値を有するか又は空のままにされる可能性がある。エンティティの属性がスカラと考えられるのか又はベクトルと考えられるのかは、存在するエンティティのインスタンスの数に対応する。したがって、テーブルによって表されるエンティティの例においては、テーブルが単一の行を含むとすれば、各フィールドは、そのエンティティに関するスカラ値の属性を表すことになる。テーブルが複数の行を含むとすれば、各フィールドは、そのエンティティに関するベクトル値の属性の要素を表すことになり、各ベクトルの要素の数（すなわち、ベクトルの長さ）は、テーブルの行の数に等しい。
【００３４】
また、各エンティティは、任意の数の子エンティティを有する可能性がある。子エンティティは、（エンティティの特定のインスタンスに関して単一のインスタンスを有するだけである下位レコードとは異なり）それ自体、親エンティティの各インスタンスに関して任意の数のインスタンスを有する可能性がある。異なるエンティティの間の階層的な親−子関係は、さまざまな方法のいずれかで形成され得る。一部の実施形態において、親−子関係は、親エンティティに関するテーブルの行に対応する外部キー値を記憶する子エンティティに関するテーブルのフィールドを使用して形成される可能性がある。その他の実装形態において、親−子関係は、親及び子エンティティを表すデータ構造の間のポインタを使用して形成される可能性があり、又は親エンティティを表すデータ構造内に埋め込まれた子エンティティを表すデータ構造の入れ子が、存在する可能性がある。各子エンティティは、ルートエンティティから始まる親−子関係によって関連付けられるエンティティの連鎖の中を通る特定のパス（階層内のその子エンティティの位置を規定するその子エンティティの「コンテキスト」とも呼ばれる）を有する。階層の最も低いレベルにあるのは、いかなる子エンティティも持たない葉エンティティである。各エンティティは、葉エンティティであるか又は親エンティティであるかのどちらかである。
【００３５】
エンティティの異なるインスタンスが一意に特定され得ることを可能にするために、エンティティの１又は２以上の属性が、エンティティに関する一意キーの一部である「キー属性」として特定される可能性がある。場合によっては、エンティティは、単一のキー属性を有する。例えば、「Custid」とラベル付けされたフィールドは、Customerエンティティのインスタンスを表す各レコードに一意である値を記憶し得る。そのような単一のキーフィールドは、「単純キー（simple key）」と呼ばれることがある。場合によっては、エンティティが、（「複合キー」とも呼ばれる）一意キーを一緒に形成する複数のキー属性を有する。例えば、フィールド「first_name」と、「last_name」と、「SSN」との組合せ（例えば、連結）は、Accountsエンティティのインスタンスを表すレコードを一緒に一意に特定するキー属性として働く可能性がある。（「候補キー」とも呼ばれる）一意の値を有する複数のフィールドが存在し、それらのフィールドのうちの１つ（又はフィールドの組合せ）が、（「主キー」とも呼ばれる）使用される一意キーとして使用するために選択され得る。（「サロゲートキー」とも呼ばれる）一意キーの一部として働く値を記憶するためにレコードにフィールドが追加されることがある。
【００３６】
ユーザインターフェース１０４は、ディスプレイスクリーン上のグラフィカルユーザインターフェースとして提示される可能性がある。図２Ａは、ユーザ１０８が階層内のエンティティ及びそれらのエンティティの互いの関係を定義し、見ることを可能にするために与えられ得るユーザインターフェース２００の視覚的構成の例を示す。ユーザインターフェース２００は、（１）属性のデータ型のリストを含む別々の字下げされたセクションにおいて定義された異なるエンティティを命名する見出しを含む左の部分２０２と、（２）対応するデータ型と位置を揃えられた属性名を含む右の部分２０４とを含む。一部の実施形態においては、階層内のすべてのその他のエンティティによってアクセスされ得るグローバル変数として働く属性を有する単一のインスタンスを有するルートエンティティが、設けられる。この例においては、「int」（すなわち、整数）型の「TaxRate」と命名された単一の属性を記載するセクション２０６Ａにおいて定義されたルートエンティティが、設けられる。ルートエンティティは、セクション２０６Ｂにおいて定義された「Customer」と命名された単一の子エンティティを有する。さらに、Customerエンティティは、３つの属性、すなわち、（「string」型の）「Custid」、（「int」型の）「Discount」、及び（「string」型の）「PostalCode」を有する。
【００３７】
セクションの字下げは、階層内の対応するエンティティのレベルに対応する（つまり、同じ量だけ字下げされたすべてのセクションは、階層内の同じレベルにある）。同じ量だけ字下げされ、特定のエンティティに関するセクションよりも下にある任意の数の連続的なセクションは、その特定のエンティティの子であるエンティティを定義する。この例において、Customerエンティティは、２つの子エンティティ、すなわち、（１）セクション２０６Ｃにおいて定義される「Purchase」と命名されたエンティティと、セクション２０６Ｄにおいて定義される「Payment」と命名されたエンティティとを有する。Purchaseエンティティは、３つの属性、すなわち、（「int」型の）「Quantity」、（「number」型の）「UnitPrice」、及び（「date」型の）「PurchDate」を有する。Paymentエンティティは、２つの属性、すなわち、（「number」型の）「PayAmount」及び（「date」型の）「PayDate」を有する。
【００３８】
システムがサロゲートキーを割り当てることによって自動的にか、又はユーザが主キーのために１若しくは２以上の属性を指定する（例えば、CustidをCustomerエンティティのためのエンティティキーとして指定する）ことによってかのどちらかで、エンティティキーが各エンティティに割り当てられ得る。ユーザが一意でないエンティティキーとして使用される属性を指定する場合、システムは、それをエラーとして示すことができる。ユーザがエンティティキーとして属性を指定しない場合、エンティティキーが親エンティティの特定のインスタンスに関連するキー値の空間内で一意であることを保証するようにしてサロゲートエンティティキーが各インスタンスのためにデフォルトで生じさせられる可能性がある。このサロゲートエンティティキーは、ユーザから隠される可能性があり、又は（例えば、名前「SurrogateKey」を有する）宣言された属性としてユーザインターフェース２００に明示的に含まれ、ユーザが式内でサロゲートエンティティキーを参照することを可能にする可能性がある。エンティティが「インデックス付き」であるものとして規定される場合、エンティティキーが、０から始まり、増加する（つまり、間をまったく空けない）連続する整数として割り当てられる可能性があり、したがって、エンティティのインスタンスは、Customer[i]などの構文を使用して参照される可能性があり、ここで、iは、エンティティキーの整数値である。加えて、エンティティが順序付けられているという特性を有する場合、はっきりと定義された順序を有する属性のうちの１つが順序を与えるものとして指定される可能性がある。順序は、一意の値を有するキーを使用する（例えば、CustomerエンティティのためのCustidによる）完全な順序付けである可能性があり、又は順序は、（例えば、CustomerエンティティのためのPostalCodeによる）部分的な順序付けである可能性がある。
【００３９】
図２Ｂは、（図２Ａのように、階層内のエンティティ及びそれらのエンティティの互いの関係を定義し、見ることに加えて）ユーザ１０８が特定の属性に関する式を定義することを可能にするために与えられ得るユーザインターフェース２２０の視覚的構成の例を示す。例示を目的として、この例のユーザインターフェース２２０は、前の例の対応するセクション２０６Ａ〜２０６Ｄ内のエンティティと同様のエンティティに関するセクション２２８Ａ〜２２８Ｄを含む。ユーザインターフェース２２０は、（１）属性のデータ型のリストを含む別々の字下げされたセクションにおいて定義された異なるエンティティを命名する見出しを含む左の部分２２２と、（２）対応するデータ型と位置を揃えられた属性名を含む真ん中の部分２２４と、（３）（１又は２以上の）その他の属性の（１又は２以上の）値によって定義される任意の属性に関する式を含む右の部分２２６とを含む。そのような式を使用して定義された属性は、「定義属性（defined attribute）」と呼ばれ、対応するエンティティのインスタンスは、与えられた式に従って計算されるその定義属性の値を有することになる。例えば、定義属性の値は、さまざまなエンティティを含む計算が評価されるときに計算又は再計算される可能性がある。そのような式を持たない属性は、「具体的属性（concrete attribute）」と呼ばれ、対応するエンティティのインスタンスは、いかなるその他の属性も参照せずに値を直接与えられる。２つ以上の属性が式内で参照される場合、分析モジュール１１２は、下でより詳細に説明されるように、それらの「参照される属性」が適合するかどうかを決定する。この例においては、ルートエンティティのCustomerエンティティとPurchaseエンティティとが、前の例の具体的属性に加えて、その他の属性を参照する式を用いて定義される定義属性を与えられた。
【００４０】
分析モジュール１１２は、式内の任意の数の引数に適用されなければならない任意の数の関数を特定することができる。例えば、式は、引数のセットに適用される単一の関数、又はその他の関数の結果に適用される関数の合成を含む可能性がある。本明細書において使用されるとき、用語「関数」は、幅広く使用され、関数の引数である任意の数のオペランドに適用される任意の演算を指す可能性があり、又はたとえその関数が決まった演算ではないとしても、任意の数の引数（引数がないことも含む）を入力に取るように定義された任意の計算を指す可能性がある。式内で使用するためにサポートされ得る演算の種類の例は、さまざまなプログラミング言語の単項演算子、二項演算子、及び三項演算子（例えば、加算、減算、乗算、除算、モジュラス、左又は右シフト）、等しいこと又は等しくないことのさまざまなテスト、スカラ値演算（例えば、指数、対数）の適用を含む。加えて、ユーザが式内で使用したい可能性がある任意のカスタム関数をユーザが定義することを可能にするためのプログラミング言語が提供される可能性がある。
【００４１】
定義属性の値がどのようにして計算されるべきかを定義する式をユーザ１０８が提供した後、分析モジュール１１２は、式を分析して、式が規則に則しているのか又は規則に違反しているのかを決定する。適合性（又はその欠如）に加えて、その他のエラー又は不整合が、分析モジュール１１２によって認識され得る。参照される属性は、具体的属性又は定義属性のどちらかである可能性があるが、参照される属性が定義属性である場合、いかなる循環参照もあってはならない。例えば、第１の属性を定義する式が第２の属性を参照する場合、その第２の属性は、第１の属性を参照する式によって定義（つまり、循環参照）されてはならない。
【００４２】
第１のエンティティの属性を定義する式が、第１のエンティティの「先祖エンティティ（ancestor entity）」である第２のエンティティの属性を参照する可能性があり、第１のエンティティの「先祖エンティティ」であるとは、その第２のエンティティが、第１のエンティティとルートエンティティとの間の親−子関係の連鎖の中にあることを意味する。例えば、AmountDueに関する式は、（Customerエンティティからの）Discount属性及び（ルートエンティティからの）TaxRate属性を参照する。属性値が参照されているその先祖エンティティの特定のインスタンスが、存在することになる。ルートエンティティの単一のインスタンスの属性は、階層内のいずれのエンティティのいずれの属性に関するいずれの式内においても同じ値を有する。式は、定義属性と同じレベルのPurchAmount、１つ上のレベルのDiscount、及び２つ上のレベルのTaxRateを参照するAmountDueに関する式のように、異なるレベルの異なる属性に対する参照を含む可能性もある。
【００４３】
一部の参照される属性は、それらの属性のそれぞれのエンティティの複数のインスタンスからの値を有するベクトル値属性である。そのようなベクトル値属性に適用され得る一種の演算は、（その属性のエンティティのそれぞれのインスタンスに含まれる）その属性の値のすべてを表すベクトルの要素に対して働く集約演算（aggregation operation）である。場合によっては、集約演算は、スカラの結果を生成する。例えば、TotalDueに関する式は、sum(AmountDue)であり、sum(AmountDue)は、Customerエンティティの特定のインスタンスに関して、Purchase子エンティティのインスタンス全体にわたってAmountDueの値を足し、Customerエンティティの特定のインスタンスに関するスカラの結果を生成する。より広く、集約演算は、集約されているベクトルのレベルから階層内で１つ上のレベルにある結果をもたらす、コンテキスト内の最後のエンティティを取り除くことと考えられ得る。ルートエンティティのTotalTax属性に関する式は、TaxRate及びPurchAmount（ルートエンティティの孫）の積である被加数を有する合計を含む。したがって、Purchaseの値は、Purchaseエンティティのインスタンス全体で合計され、結果は、Customerエンティティ（ルートエンティティの子）のインスタンス全体のベクトルである。
【００４４】
代替的に、一部の集約演算は、対応するエンティティの特定のインスタンスに関してスカラの結果が得られるまで、オペランドに対して繰り返し働く可能性がある。例えば、上の合計のベクトル値の結果の値が、合計され、TotalTax属性の値としてスカラを与える可能性がある。この繰り返しの集約は、例えば、属性がそれらの属性のエンティティに関してスカラ値であることを必要とする特定の実施形態において実行される可能性がある。
【００４５】
属性の値のすべてに対して働く、ベクトル値の属性に適用され得る別の種類の演算は、ベクトル値の結果を返す演算である。例えば、running_sum(<vector>)と呼ばれる演算が、<vector>の始まりと現在の要素との間の<vector>の要素の部分的な合計を生成する演算として定義される。したがって、running_sum({1, 2, 3, 4})を含んでいたとした式は、結果として得られるベクトル{1, 3, 6, 10}を生じることになる。属性がそれらの属性のエンティティに関してスカラ値であることを必要とする実装形態においては、そのような演算は、スカラの結果を得るためにさらなる演算が適用されることをやはり必要とする。
【００４６】
ユーザインターフェース２２０内で与えられた式は、属性の定義と属性の参照との間の依存関係に基づいて暗黙的に順序付けられる。この順序は、ユーザインターフェース２２０内の空間的な順序によって制約されない。例えば、TotalDueの定義は、AmountDueを参照しており、これは、循環定義が存在しないので規則に則している。AmountDueがユーザインターフェース２２０内でより下の方で定義されていることは、問題にならない。定義属性に関する式が評価される順序を制約するための部分的な順序付けを決定するために、トポロジカルソートが使用され得る。トポロジカルソートは、循環参照が存在しないことを保証するためにも使用され得る。
【００４７】
属性が式内で一意に参照され得るさまざまな方法が、存在する。属性名が一意である場合、分析モジュール１１２の一部の実装形態は、その属性をその属性の名前によってのみ認識するように構成される可能性がある。（兄弟エンティティ（sibling entity）が一意の名前を有すると仮定して）たとえ異なるエンティティの属性が同じ名前を有するとしても属性が一意に参照され得る別の方法は、式内に属性のコンテキストを含めることによる。例えば、ルートエンティティの子から始め、所望の属性のエンティティが到達されるまで各エンティティ名の後にドット（「．」）を含めて、コンテキストの各エンティティが命名される「適格な名前（qualified name）」を提供するために、「ドット表記」が使用され得る。例えば、PurchDate属性は、たとえ別のエンティティがPurchDateと呼ばれる属性を有していたとしても、適格な名前Customer.Purchase.PurchDateによって式内で曖昧性なく参照され得る。一部の実装形態においては、属性の潜在的に曖昧な「適格でない（non-qualified）」名前（すなわち、コンテキストのない単なる属性名）が、適格でない名前を含む式が現れたエンティティと同じエンティティに属すると解釈される可能性がある。例えば、Purchaseが（PurchAmountの代わりに）Amountと呼ばれる属性を有し、Paymentが（PayAmountの代わりに）Amountと呼ばれる属性を有するとすれば、AmountDueにおけるAmountに対する参照は、PaymentではなくPurchaseに属するものと自動的に解釈されることになる。しかし、TotalTax属性に現れる参照は、（PurchAmountの代わりに）適格な名前Customer.Purchase.Amountを含む必要がある。場合によっては、エンティティの属性のいずれも規定することなくそのエンティティ自体を参照することが有用である可能性があり、その場合、「Customer」と命名されたエンティティを参照するために「Customer[]」などの特別な表記が使用される可能性がある。この表記は、属性値のベクトルの特定の要素を選択するために使用される可能性もある。例えば、Customer.Discountは、Customerエンティティのインスタンス全体のベクトルであり、Customer[5].Discountは、Customerエンティティの第５のインスタンスのDiscount属性のスカラ値である。
【００４８】
式が規則に則しているのか又は規則に違反しているのかの決定は、参照される属性がスカラであるのか又はベクトルであるのか、及び参照されるベクトル属性の適合性に基づく。各エンティティは、任意の数の具体的属性及び任意の数の定義属性を有する可能性がある。エンティティの各属性（具体的又は定義）は、そのエンティティの各インスタンスに関するそれぞれの値を有する。したがって、第１のエンティティの特定のインスタンスに関して、第１の属性は、スカラである（単一の値を有する）可能性があるが、第１のエンティティの先祖のインスタンスに関しては、第１の属性は、ベクトルである（第１のエンティティの各インスタンスに関して１つずつ複数の値を有する）可能性がある。したがって、親エンティティの定義属性に関する式における子エンティティの属性に対する参照は、その子エンティティのインスタンス全体のベクトルである。一部の実装形態において、式を評価した結果は、属性がその式によって定義されているエンティティの特定のインスタンスに関してスカラであることを要求される。したがって、式は、これらのベクトルの要素に対して働く集約演算（例えば、sum、max）を含み得る。
【００４９】
システム１００が適合性を保証するために使用する手順の一例は、（評価モジュール１１４によって実行される）評価が後に続く（分析モジュール１１２によって実行される）分析の１又は２以上のフェーズを含む。この手順は、式内に現れる特定の属性のコンテキストが「昇格させられる」初期ステップを含む可能性がある。例えば、適格な名前Customer.Purchase.AmountDueは、定義属性AmountDueに関するCustomer.Purchaseのコンテキストを有する。定義属性のこのコンテキストが、昇格手順において使用される。昇格させられる属性は、定義属性の祖先エンティティの属性である。したがって、この例においては、属性TaxRate及びCustomer.Discountが昇格させられる。属性は、その属性のコンテキストを定義属性のコンテキストによって置き換えて「昇格させられた名前」を生じさせることによって昇格させられ、これは、この例においては、Customer.Purchase.TaxRate及びCustomer.Purchase.Discountを生じる。昇格させられている名前と同じ名前を有するいずれの既存の属性によって引き起こされるいかなる曖昧性も、属性名に一時的な接頭辞又は接尾辞を加えることによるなどのさまざまな方法で解決され得る。
【００５０】
昇格ステップの後、分析モジュール１１２は、ベクトルである２又は３以上の参照される属性に対して実行される演算を式が含むかどうかを決定する。含む場合、そのような多ベクトル演算のそれぞれに関して、分析モジュール１１２は、ベクトル値の参照される属性の適合性を調べる。定義属性のエンティティのインスタンスに関して、祖先エンティティのいずれの昇格させられた属性も、又は定義属性自体と同じエンティティのいずれの属性も、それらの属性のそれぞれのエンティティの特定のインスタンスに由来するスカラ値を有する。一方、いずれかの祖先でないエンティティ（つまり、子孫エンティティ又はいとこエンティティ）の属性は、潜在的に、それらの属性のそれぞれのエンティティの複数のインスタンスに由来する値のベクトルを有する可能性がある。したがって、適合性に関して調べられる必要がある可能性があるのは、これらの祖先でないエンティティである。
【００５１】
２又は３以上のベクトル値の参照される属性が適合するかどうかを決定する次のステップは、それらの属性のコンテキストを比較することである。一部の実装形態において、比較は、２又は３以上の属性のそれぞれの一意の対に関して一回実行される。各対に関して、分析モジュール１１２は、（潜在的に昇格させられる）コンテキストが同一であるかどうか、又は一方が他方の接頭辞であるかどうかを決定する。これらの条件のどちらかが真である場合、参照される属性の対は適合する。これらの条件のどちらも真でない場合、参照される属性の対は適合しない。参照される属性のセット全体は、それらの属性がすべての対で互いに適合する場合に適合する。分析モジュール１１２が参照される属性が適合すると決定する場合、評価モジュール１１４は、式、又はそれらの参照される属性に対する演算を含む式の一部を評価する。そうでない場合、システム１００は、適合性分析の結果に基づいて適合性エラーを（例えば、ユーザインターフェース２２０内の視覚的インジケータとして）示す。一部の実装形態において、２又は３以上の適合するベクトル値の属性に対する演算の結果が、コンテキストのうちで最長のものをそれ自体のコンテキストとして継承する。
【００５２】
分析モジュール１１２は、ベクトル値の参照される属性及びスカラ値の参照される属性の混合に対して働く演算の場合、適合性を調べる必要はない。例えば、追加的な演算が、ベクトルのあらゆる要素に（つまり、属性のエンティティのあらゆるインスタンスに関して）スカラを足すことによってベクトルとスカラを合計する可能性がある。一部の演算に関して、スカラ値の属性及びベクトル値の属性の混合は、オペランドとして許容されない可能性があり、分析モジュールが式を規則に違反するものとして特定することにつながる可能性がある。
【００５３】
図３は、システム１００によって実行される可能性がある適合性チェック手順３００の例の流れ図を示す。この例において、手順３００は、式内の評価される潜在的な複数の関数を含むforループとして実装される。forループの前後に実行されるステップ（図示せず）が存在する可能性があり、さまざまな実装形態において、その他の分析及び／又は評価ステップがこの手順３００に加えて実行される可能性がある。forループを使用して、分析モジュール１１２は、漸進的にそれらの関数の引数を分析して、（評価モジュール１１４によって）関数が適用される前に適合性を調べることができる。forループは、式内に表された１又は２以上の関数に対して繰り返される（３０２）。それぞれの特定された関数に関して、手順３００は、関数の引数のすべてを特定する（３０４）。手順は、参照される属性を含むそれらの引数の数を数える（３０６）。２以上の参照される属性が存在する場合、手順３００は、それらの複数の参照される属性のコンテキストを比較することによって適合性チェックを実行する（３１０）。１以下の参照される属性（つまり、０又は１つの参照される属性）が存在する場合、手順は、適合性チェック（３１０）を実行することなくforループの始めにループして戻る。参照される属性が適合しない場合、手順３００は、エラーを示し（３１２）、forループを抜ける（３１４）。参照される属性が適合する場合、手順３００は、関数を適用する（３１６）。ループ条件は、今適用された関数が式内の適用される最後の関数であるかどうかを調べる（３１８）。最後の関数である場合、手順３００は、forループを抜ける（３１４）。最後の関数でない場合、手順３００は、forループの始めにループして戻る。
【００５４】
さまざまな種類の集約又は選択演算が、ベクトルからスカラ値を生成するために式内で使用するためにサポートされる可能性があり、そして、それらのスカラ値は、その他のスカラ値とともに操作され得る。例えば、１つの種類の演算は、次の構文、すなわち、<vector> where <condition>を使用してベクトルをフィルタリングする。条件は、ベクトルの単一の要素に関してのみ真になると仮定される。この及びその他の演算子に関して、評価モジュール１１４は、演算がスカラの結果を生じることをランタイムで検証することができ、生じない場合、エラーを生成することができる。
【００５５】
一部の実装形態においては、さまざまな制限が、エンティティに課される可能性がある。場合によっては、それらの制限は、エンティティのコンテキストに影響を与え、したがって、エンティティの適合性に影響を与える。例えば、エンティティは、複数のインスタンスを有することを可能にされない子エンティティを有する可能性があるが、その子エンティティの単一のインスタンスは、独自の属性を有する可能性がある。そのような子エンティティに関するコンテキストは、その子エンティティの親のコンテキストと同じである（つまり、スカラ子エンティティは、属性として扱われる）。
【００５６】
一部の実装形態において、（属性がその他の属性の関数として定義され得るのと同様に）エンティティはその他のエンティティの関数として定義されることを可能にされる。例えば、エンティティは、その他のエンティティのunion、join、group by、又はrollup（又はその他の関係演算）として定義され得る。さまざまな関数が、結果のコンテキストを決定するための規則を有する可能性がある。
【００５７】
上述の階層的なエンティティのための計算を管理する手法は、好適なソフトウェアを実行するコンピューティングシステムを使用して、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ，field-programmable gate array）などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも１つのプロセッサ、（揮発性及び／又は不揮発性メモリ及び／又はストレージ要素を含む）少なくとも１つのデータストレージシステム、（少なくとも１つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも１つの出力デバイス又はポートを用いて出力を与えるための）少なくとも１つのユーザインターフェースを含む（分散、クライアント／サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある）１又は２以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される１又は２以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの１又は２以上のモジュールを含む可能性がある。プログラムのモジュール（例えば、データフローグラフの要素）は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【００５８】
ソフトウェアは、ＣＤ−ＲＯＭ又は（例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な）その他のコンピュータ可読媒体などの有形の非一時的媒体上に提供される可能性があり、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される（例えば、伝搬信号に符号化される）可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは専用の特定用途向け集積回路（ＡＳＩＣ，application-specific integrated circuit）などの専用のハードウェアを使用して実行される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なるコンピューティング要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体（例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体）に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの１又は２以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【００５９】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。
【図１】
0006567043.tif 000002
【図２Ａ】
0006567043.tif 000003
【図２Ｂ】
0006567043.tif 000004
【図３】
0006567043.tif 000005