(57)【要約】【課題】ディクショナリ管理を用いない普遍的に一意のリソースを提供すること。【解決手段】本明細書において開示されるデータベースおよび方法は、データを直接的にインデックス内に記憶する（例えば、リテラル値を記憶する、または普遍的に一意の識別子（ＵＵＩＤ）を利用する）ことによって、コスト高のディクショナリアクセス（書き込みおよび読み取り）を減少させ、それによって、時間およびメモリを節約する。１つの例示的な実施形態は、ディクショナリと、インデックスとを含む、データベースである。ディクショナリは、キーとデータとの間の関連付けを記憶する。インデックス内の各エントリは、データに対応する複数の値を含む。インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュは、ディクショナリにおいて、対応するデータと関連付けられたキーとして使用される。【選択図】図１
2019121395.tif 000002
【特許請求の範囲】
【請求項１】
キーとデータとの間の関連付けを記憶するディクショナリと、
インデックスであって、前記インデックス内の各エントリは、データに対応する複数の値を含む、該インデックスと
を備え、
前記インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、前記対応するデータのハッシュを含み、前記ハッシュは、前記ディクショナリ内において、前記対応するデータと関連付けられたキーとして使用されることを特徴とするデータベース。
【請求項２】
前記データベースは、リソース ディスクリプション フレームワークデータベースであり、前記インデックスの前記複数の値は、主語、述語、および目的語に対応する、３つの値を含むことを特徴とする請求項１に記載のデータベース。
【請求項３】
前記インデックスの値は、整数、倍精度浮動小数点数、浮動小数点数、８文字以下の文字列、または普遍的に一意の識別子のデータ型のいずれかについては、対応するデータの直接的な表現を含むことを特徴とする請求項１に記載のデータベース。
【請求項４】
インデックス値の第１の数のビットは、前記値によって表されるデータのカテゴリを表すことを特徴とする請求項１に記載のデータベース。
【請求項５】
前記インデックス値の前記第１の数のビットによって表されるデータの前記カテゴリは、リテラル値であり、前記インデックス値の第２の数のビットは、前記リテラル値のデータ型を表すことを特徴とする請求項４に記載のデータベース。
【請求項６】
前記インデックス値の残りのビットは、前記データの前記リテラル値を記憶することを特徴とする請求項５に記載のデータベース。
【請求項７】
前記インデックス値は、１２８ビットであり、前記第１の数のビットは、２ビットであり、前記第２の数のビットは、６２ビットであることを特徴とする請求項５に記載のデータベース。
【請求項８】
前記インデックス値の前記残りのビットは、前記データを記憶することを特徴とする請求項４に記載のデータベース。
【請求項９】
前記インデックス値の前記残りのビット内に記憶される前記データは、普遍的に一意の識別子であることを特徴とする請求項８に記載のデータベース。
【請求項１０】
前記インデックス値の前記残りのビットは、前記データのハッシュを記憶することを特徴とする請求項４に記載のデータベース。
【請求項１１】
データベース内にデータを記憶するコンピュータ実施方法であって、前記データベースは、インデックスと、ディクショナリとを含む方法において、
前記ディクショナリ内に、キーとデータとの間の関連付けを記憶するステップと、
前記インデックス内に、データに対応する複数の値を含む索引を記憶するステップと
を備え、
前記インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、前記対応するデータのハッシュを含み、前記ハッシュは、前記ディクショナリ内において、前記対応するデータと関連付けられたキーとして使用されることを特徴とする方法。
【請求項１２】
前記データベースは、リソース ディスクリプション フレームワークデータベースであり、前記インデックスの前記複数の値は、主語、述語、および目的語に対応する、３つの値を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記インデックス内に索引を記憶するステップは、整数、倍精度浮動小数点数、浮動小数点数、８文字以下の文字列、または普遍的に一意の識別子のデータ型のいずれかについては、対応するデータの直接的な表現として前記インデックスの値を記憶するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記インデックス内に索引を記憶するステップは、インデックス値の第１の数のビット内に、前記値によって表されるデータのカテゴリの表現を記憶するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記インデックス値の前記第１の数のビットによって表されるデータの前記カテゴリは、リテラル値であり、前記インデックス内に索引を記憶するステップは、前記インデックス値の第２の数のビット内に、前記リテラル値のデータ型の表現を記憶するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記インデックス内に索引を記憶するステップは、前記インデックスの値の残りのビット内に、前記データの前記リテラル値を記憶するステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記インデックス内に索引を記憶するステップは、前記インデックス値の前記残りのビット内に、前記データを記憶するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記インデックス内に索引を記憶するステップは、前記インデックス値の前記残りのビット内に、普遍的に一意の識別子を記憶するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記インデックス内に索引を記憶するステップは、前記インデックス値の前記残りのビット内に、前記データのハッシュを記憶するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項２０】
コンピュータメモリ内にデータを記憶し、取り出す方法であって、
インデックスおよびディクショナリに従って、前記メモリを構成するステップであって、前記インデックス内の各エントリは、データに対応する複数の値を含み、前記ディクショナリは、キーとデータとの間の関連付けを記憶する、ステップと、
前記インデックスの各値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、前記対応するデータのハッシュを含み、前記ハッシュは、前記ディクショナリ内において、前記対応するデータと関連付けられたキーとして使用される、ステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディクショナリ管理を用いない普遍的に一意のリソースに関する。
【背景技術】
【０００２】
結果整合性は、アイテムに対するすべての個々のアクセスが、同じ値を最終的に返すことを目的に、分散コンピューティングにおいて使用される、モデルである。結果整合的であるセマンティックウェブ上におけるシステムは、ＢＡＳＥ（基本的に可用、柔軟な状態、結果整合性）としばしば呼ばれる。リソース ディスクリプション フレームワーク（ＲＤＦ）は、ウェブ上におけるデータ交換のための例示的な規格である。ＲＤＦは、物事間の関係を（「トリプル」と呼ばれる）主語、述語、および目的語として記述するために、ユニバーサルリソースアイデンティファイア（ＵＲＩ）を使用する。ＵＲＩは、リソースを識別するために使用される、文字列である。ＵＲＩの１つの例は、「ウェブアドレス」としばしば呼ばれる、ユニフォームリソースロケータ（ＵＲＬ）である。ＲＤＦは、有向のラベル付けされたグラフとして表されることができ、ノードは、ウェブリソースを表し、ノード間のエッジは、リソース間の関係を表す。
【０００３】
非常に大量のデータの生成を可能にするアプリケーションは、ＲＤＦデータセットを使用することから、利益を得ることができる。そのようなケースにおいては、非常に大量のＵＲＩの生成が、サポートされなければならない。ＲＤＦトリプルストレージにインデックスを提供して、非常に冗長な情報の持続性を最適化することを助けるために、ディクショナリが、使用されることができる。ディクショナリ（ｄｉｃｔｉｏｎａｒｙ）およびインデックス（ｉｎｄｅｘ）は、基本的に、以下の３つの操作を提供する。（１）挿入−ＲＤＦノードにインデックスを与え、それの値をディクショナリ内に記憶する。（２）ロケート−ＲＤＦノードと関連付けられたインデックスを提供する。（３）抽出−ディクショナリから、インデックスと関連付けられた値を提供する。ロケート操作および抽出操作は、正確なインデックスを分配するために、ディクショナリ全体に対する最新の更新に遠くのサイトからアクセスする必要があるので、それらは、ディクショナリが大きくなるにつれて、コスト高になることがある。２つの異なるサイトは、同じリソースを同時に挿入することを試みてよいので、挿入操作は、非集中的で分散的なディクショナリという状況において、問題となることができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
普遍的に一意の識別子（ＵＵＩＤ）は、ＲＤＦデータベースにおいて、衝突のリスクがほとんどないデータ識別子を与えるために使用されることができる。ＵＵＩＤは、文字列として表され、３６バイトである、多くの従来のＵＲＩよりもコンパクト（すなわち、標準的なＵＵＩＤテキスト形式に従うと、１６進フォーマットでバイト当たり２つの英数字文字、および４つのダッシュ）であってよいがＵＵＩＤを文字列として操作することは、それの自然な２進表現は、１６バイト（１２８ビット）だけであるので、準最適である。文字列ディクショナリを使用して、大量のＵＵＩＤベースのＵＲＩを取り扱うことは、プロセッササイクルおよびメモリの浪費であり、２つの異なるサイトが同じＵＵＩＤを生成することは、きわめて可能性の低い出来事であるという、ＵＵＩＤの特徴の利益を失う。可能性が低いので、それは、相互検証の必要がない、非集中的なシステムを構築する際の仮定として、採用されることができる。
【０００５】
本明細書において開示されるデータベースおよび方法は、コスト高なディクショナリアクセス（書き込みおよび読み取り）を減少させるために、これを利用することができ、時間およびメモリを節約する。１つの例示的な実施形態は、ディクショナリと、インデックスとを含む、データベースである。ディクショナリは、キーとデータとの間の関連付けを記憶する。インデックス内の各エントリは、データに対応する複数の値を含む。インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュ（ｈａｓｈ）は、ディクショナリ内において、対応するデータと関連付けられたキーとして使用される。
【０００６】
別の例示的な実施形態は、データベース内にデータを記憶する、コンピュータ実施方法であり、データベースは、インデックスと、ディクショナリとを含む。例示的な方法は、ディクショナリ内に、キーとデータとの間の関連付けを記憶するステップを含む。方法は、インデックス内に、データに対応する複数の値を含む索引を記憶するステップをさらに含む。インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュは、ディクショナリ内において、対応するデータと関連付けられたキーとして使用される。
【０００７】
別の例示的な実施形態は、コンピュータメモリ内にデータを記憶し、コンピュータメモリ内のデータを取り出す、方法である。例示的な方法は、インデックスおよびディクショナリに従って、メモリを構成するステップを含む。インデックス内の各エントリは、データに対応する複数の値を含む。ディクショナリは、キーとデータとの間の関連付けを記憶する。インデックスの各値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュは、ディクショナリ内において、対応するデータと関連付けられたキーとして使用される。
【０００８】
いくつかの実施形態においては、データベースは、リソース ディスクリプション フレームワークデータベースであり、インデックスの複数の値は、主語、述語、および目的語に対応する、３つの値を含むことができる。いくつかの実施形態においては、インデックスの値は、型が整数、倍精度浮動小数点数、浮動小数点数、８文字以下の文字列、または普遍的に一意の識別子である任意のデータについては、対応するデータの直接的な表現を含むことができる。
【０００９】
いくつかの実施形態においては、インデックス値の第１の数のビットは、値によって表されるデータのカテゴリを表すことができる。インデックス値の第１の数のビットによって表されるデータのカテゴリは、リテラル値カテゴリであることができ、そのケースにおいては、インデックス値の第２の数のビットは、リテラル値のデータ型を表すことができる。インデックス値の残りのビットは、データのリテラル値を記憶することができる。インデックス値は、１２８ビットであることができ、（データのカテゴリを表す）第１の数のビットは、２ビットであることができる。リテラル値カテゴリのケースにおいては、（データ型を表す）第２の数のビットは、６２ビットであることができる。リテラル値以外のケースにおいては、（第１の数のビット以外の）インデックス値の残りのビットは、データを記憶することができる。いくつかのケースにおいては、インデックス値の残りのビット内に記憶されるデータは、普遍的に一意の識別子であることができ、他のケースにおいては、インデックス値の残りのビットは、データのハッシュを記憶することができる。
【図面の簡単な説明】
【００１０】
上述したことは、添付の図面において図説されるように、例示的な実施形態についての以下のより具体的な説明から明らかであり、図面において、同様の参照文字は、どの異なる図においても、同じ部分を参照する。図面は、実寸に比例しているとは限らず、代わりに、実施形態を図説する際、強調が、施されることがある。
【００１１】
【図１】例示的な実施形態に従った、メモリ内のディクショナリおよびインデックスを示す、ブロック図である。
【図２Ａ】例示的な実施形態に従った、インデックス値の例を示す、ブロック図である。
【図２Ｂ】例示的な実施形態に従った、インデックス値の例を示す、ブロック図である。
【図２Ｃ】例示的な実施形態に従った、インデックス値の例を示す、ブロック図である。
【図２Ｄ】例示的な実施形態に従った、インデックス値の例を示す、ブロック図である。
【図３】例示的な実施形態に従った、データベース上における例示的な操作を示す、フロー図である。
【図４】例示的な実施形態に従った、データベース内にデータを記憶するコンピュータ実施方法を示す、フロー図である。
【図５】例示的な実施形態に従った、データベース内にデータを記憶することを示す、フロー図である。
【図６】例示的な実施形態に従った、データベースからデータを読み取ることを示す、フロー図である。
【図７】本明細書において提示される例示的な実施形態が実施されることができる、コンピュータネットワーク環境の概略図である。
【図８】図７のネットワークの例示的なコンピュータノードを示す、ブロック図である。
【発明を実施するための形態】
【００１２】
例示的な実施形態についての説明は、以下の通りである。
【００１３】
データセット内のデータを識別するために、命名体系が、必要とされる。衝突のリスクがほとんどないデータ識別子を与えるために、ＵＵＩＤが、一般に使用される。ＵＵＩＤは、コンピュータシステム内において、情報を識別するために使用される、１２８ビット数である。標準的な方法に従って生成されるとき、ＵＵＩＤは、集中的管理、またはＵＵＩＤを生成した当事者間における調整に依存することなく、一意的である。ＵＵＩＤが重複する確率は、無視できる。
【００１４】
図１は、例示的な実施形態に従った、メモリ１００内のディクショナリ１１０およびインデックス１０５を示す、ブロック図である。ディクショナリは、キー１３０ａ〜ｎとデータ１３５ａ〜ｎとの間の関連付けを記憶する。インデックス１０５内の各エントリ（インデックス１０５の行）は、データに対応する複数の値１１５ａ〜ｍ、１２０ａ〜ｍ、および１２５ａ〜ｍを含む。インデックス１０５の値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュは、ディクショナリ１１０内において、対応するデータと関連付けられたキー（１３０ａ〜ｎのうちの１つ）として使用される。
【００１５】
特定の実施形態においては、ディクショナリ１１０は、１２８ビットハッシュキーを、いずれかの情報（例えば、ＲＤＦノード）に対するインデックスとして使用することができる。あるデータ型（例えば、整数、倍精度浮動小数点数、日付および時刻、またはショート文字列）のリテラル値は、６４ビットの半キーに収まることができる。１２８ビット値のうちの２ビットは、データの分類のために、予約されることができ、残りの６２ビットは、データ型をエンコードするために、使用されることができる。同様に、ＵＵＩＤは、１２８ビットハッシュキーの全長を使用して、１２８ビット値内にエンコードされることができ、２つの予約ビットは、ＵＵＩＤのケースを区別することを可能にする。
【００１６】
図２Ａないし図２Ｄは、例示的な実施形態に従った、インデックス値２０５、２２５、２５０、２７０の例を示す、ブロック図である。図２Ａは、空白ノードを表す、例示的なインデックス値２０５を示している。インデックス値２０５の２つのビットは、空白ノードを示すために、使用されることができる。図２Ａのケースにおいては、値２０５のうちの最初の２つのビット２１０、２１５が、使用され、空白ノードを示すビット値は、示されるように、例えば、「００」であることができる。ビット値の異なる組み合わせが使用されてよいことが、理解されるべきである。
【００１７】
図２Ｂは、リテラル形式のデータを表す、例示的なインデックス値２２５を示している。インデックス値２２５の２つのビットは、リテラル値のデータがインデックス内に記憶されることを示すために、使用されることができる。図２Ｂのケースにおいては、値２２５のうちの最初の２つのビット２３０、２３５が、使用され、リテラルカテゴリを示すビット値は、示されるように、例えば、「０１」であることができる。ビット値の異なる組み合わせが使用されてよいことが、理解されるべきである。いくつかのビット２４０は、データの型（例えば、整数、倍精度浮動小数点数、日付、時刻、またはショート文字列）を示すために、使用されることができる。残りのビット２４５は、リテラル値のデータを記憶するために、使用されることができる。例えば、図２Ｂのケースにおいては、６２ビットが、データ型を指定するために、使用されることができ、６４ビットが、リテラル値のデータを記憶するために、使用されることができる。
【００１８】
図２Ｃは、ＵＵＩＤとしてデータを表す、例示的なインデックス値２５０を示している。インデックス値２５０の２つのビットは、データがＵＵＩＤとしてインデックス内に記憶されることを示すために、使用されることができる。図２Ｃのケースにおいては、値２５０のうちの最初の２つのビット２５５、２６０が、使用され、ＵＵＩＤカテゴリを示すビット値は、示されるように、例えば、「１０」であることができる。ビット値の異なる組み合わせが使用されてよいことが、理解されるべきである。残りのビット２６５は、データをＵＵＩＤフォーマットで記憶するために、使用されることができる。
【００１９】
図２Ｄは、ディクショナリ内においてデータを検索するために使用されるハッシュキー（例えば、図１の１１０）である、例示的なインデックス値２７０を示している。インデックス値２７０の２つのビットは、データがディクショナリ内に記憶されることを示すために、使用されることができる。図２Ｄのケースにおいては、値２７０のうちの最初の２つのビット２７５、２８０が、使用され、データがディクショナリ内に記憶されることを示すビット値は、示されるように、例えば、「１１」であることができる。ビット値の異なる組み合わせが使用されてよいことが、理解されるべきである。残りのビット２８５は、ハッシュキーを記憶するために、使用されることができる。
【００２０】
図３は、例示的な実施形態に従った、データベース上における例示的な操作を示す、フロー図である。本明細書において開示されるデータベースおよび方法のディクショナリは、抽出操作を実行するために、ハッシュキーを与えられて、値を計算することができる、逆ハッシュテーブルと見なされることができる。他方、挿入操作およびロケート操作は、一定の時間において動作し、遠いサイト間においていかなる同期も必要としない。ＲＤＦディクショナリのケースにおいては、ディクショナリは、基本的に、緩和されたトランザクション要件を有する、追加のみのＢＡＳＥデータベースである。開示されるハッシュキーの使用は、挿入操作が、ディクショナリからの読み取りを行わずに、ディクショナリに書き込むことによって、実行されることを可能にする。設計によって、与えられたインデックスが、ディクショナリ内においてすでに使用されているかどうかをチェックする必要はない。加えて、正しいハッシュアルゴリズムが、知られている場合、キーは、値自体から推測されることができるので、ロケート操作は、「読み取りなしに読み取ること」によって、実行されることができる。図３を参照すると、リソースに基づいてＵＵＩＤの生成３１０を行い、１２８ビットキーとしてＵＵＩＤのエンコード３１５を行うことによって、ＲＤＦリソースの生成３０５が、行われることができる。生成されたキーを使用して、ＲＤＦトリプルの記憶３２０が、行われることができる。キーに基づいてトリプルの検索３３０を行い、マッチした１２８ビットキーのデコード３３５を行うことによって、ＲＤＦリソースの検索３２５が、行われることができる。可能な場合は、ディクショナリを参照せずに、キーをデコードすることによって、リソースを獲得することが、好ましい。１２８ビットキーとしてＵＵＩＤのエンコードを行い、それらのキーを使用してトリプルのマッチング３５０を行うことによって、ＲＤＦリソースの読み取り３４０が、行われることができる。完全な非集中的なディクショナリについては、可能なときは、ディクショナリ内への記憶を回避することが、有益であり、それは、ここで開示されるデータベースおよび方法を使用して、ハッシュキー内のデータのインプレースエンコーディングによって、達成されることができる。ほとんどのリテラル値、すべてのＵＵＩＤベースの生成されたリソース、および（ＵＵＩＤを使用する）匿名ノードについては、ディクショナリアクセスは、回避されることができる。十分に大きいデータセットを与えられた場合、（数桁までは）ほとんどすべてのノードは、ディクショナリ管理を必要としない。
【００２１】
図４は、例示的な実施形態に従った、データベース内にデータを記憶するコンピュータ実施方法４００を示す、フロー図である。例示的な方法は、ディクショナリ内に、キーとデータとの間の関連付けを記憶するステップ４０５を含む。方法は、データに対応する複数の値を含む索引をインデックス内に記憶するステップ４１０をさらに含む。インデックスの値は、（ｉ）あるデータ型については、対応するデータの直接的な表現を、または（ｉｉ）他のデータ型については、対応するデータのハッシュのいずれかを含む。ハッシュは、ディクショナリ内において、対応するデータと関連付けられたキーとして使用される。
【００２２】
図５は、例示的な実施形態に従った、データベース内にデータを記憶する方法５００を示す、フロー図である。５０５において、データベース内に記憶されるデータのカテゴリ（例えば、ＵＲＩ）が、決定される。カテゴリが、「空白」（ヌルノード（ｎｕｌｌ  ｎｏｄｅ））である場合、５１０において、データが空白であることを示すインジケーションが、インデックス値内に記憶されることができる。カテゴリが、「リテラル（ｌｉｔｅｒａｌ）」であり、データ型が、例えば、整数、浮動小数点数、日付、または時刻である場合５１０において、データがリテラル値であることを示すインジケーションが、データ型のインジケーションおよびデータのリテラル値とともに、インデックス値内に記憶されることができる。リテラルのデータ型が、文字列である場合、５２５において、文字列のサイズが、決定されることができる。文字列のサイズが、８文字（６４ビット）以下である場合、５１０において、データがリテラル値であることを示すインジケーションが、データ型（文字列）のインジケーションおよびデータのリテラル値とともに、インデックス値内に記憶されることができる。文字列のサイズが、８文字（６４ビット）よりも大きい場合、５３０において、データがディクショナリ内に記憶されることを示すインジケーションが、データのハッシュとともに、インデックス値内に記憶されることができ、ハッシュは、ディクショナリ内において、キーとして使用される。
【００２３】
データのカテゴリが、空白またはリテラルではない場合、５３５において、データのサイズが、決定されることができる。データのサイズが、１６バイト（１２８ビット）以下である場合、データは、ＵＵＩＤとして表されてよく、５４０において、データがＵＵＩＤとして表されことを示すインジケーションが、ＵＵＩＤとともに、インデックス値内に記憶されることができる。５４５において、データのサイズが、１６バイト（１２８ビット）よりも大きい場合、データがディクショナリ内に記憶されることを示すインジケーションが、データのハッシュとともに、インデックス値内に記憶されることができ、ハッシュは、ディクショナリ内において、キーとして使用される。
【００２４】
図６は、例示的な実施形態に従った、データベースからデータを読み取る方法６００を示す、フロー図である。６０５において、インデックス値内に記憶されるデータのカテゴリが、（例えば、上で説明されたように、インデックス値の２つのビットを解釈することによって）決定されることができる。カテゴリが、「空白」（ヌルノード）である場合、６１０において、データは、空白である。カテゴリが、リテラルである場合、６１５において、データの型が、（例えば、上で説明されたように、インデックス値の６２ビットを解釈することによって）インデックス値から解釈されることができる。６１５において、データ型に基づいて、データが、リテラル値として、インデックス値から（例えば、残りの６４ビットから）読み取られることができる。カテゴリが、ＵＵＩＤである場合、６２０において、データが、ＵＵＩＤとしてのデータの表現に基づいて、インデックス値から読み取られることができる。カテゴリが、ディクショナリ検索である場合、６２５において、ハッシュキーが、インデックス値から読み取られ、ディクショナリ内のデータにアクセスするために使用されることができる。
【００２５】
図７は、本実施形態が実施されてよい、コンピュータネットワークまたは類似のデジタル処理環境を示している。クライアントコンピュータ／デバイス／プロセッサ５０、およびサーバコンピュータ６０は、アプリケーションプログラムなどを実行する、処理デバイス、記憶デバイス、および入力／出力デバイスを提供する。クライアントコンピュータ／デバイス５０は、通信ネットワーク７０を通して、他のクライアントデバイス／プロセッサ５０、およびサーバコンピュータ６０を含む、他のコンピューティングデバイスにリンクされることもできる。コミュニケーションネットワーク７０は、リモートアクセスネットワーク、グローバルネットワーク（例えば、インターネット）、クラウドコンピューティングサーバまたはサービス、世界規模のコンピュータの集まり、ローカルエリアネットワークまたはワイドエリアネットワーク、および互いに通信するために現在はそれぞれのプロトコル（ＴＣＰ／ＩＰ、Ｂｌｕｅｔｏｏｔｈなど）を使用するゲートウェイの部分であることができる。他の電子デバイス／コンピュータネットワークアーキテクチャも、適している。
【００２６】
図８は、図７のコンピュータシステムにおけるコンピュータ（例えば、クライアントプロセッサ／デバイス５０、またはサーバコンピュータ６０）の内部構造の図である。各コンピュータ５０、６０は、システムバス７９を含み、バスは、コンピュータまたは処理システムの構成要素間におけるデータ転送のために使用される、ハードウェア線のセットである。バス７９は、基本的に、コンピュータシステムの異なる要素（例えば、プロセッサ、ディスクストレージ、メモリ、入力／出力ポート、およびネットワークポート）を接続する共用導管であり、要素間における情報の転送を可能にする。様々な入力および出力デバイス（例えば、キーボード、マウス、ディスプレイ、プリンタ、およびスピーカ）をコンピュータ５０、６０に接続するために、システムバス７９には、Ｉ／Ｏデバイスインターフェース８２が、取り付けられる。ネットワークインターフェース８６は、コンピュータが、ネットワーク（例えば、図１１のネットワーク７０）に取り付けられた様々な他のデバイスに接続することを可能にする。メモリ９０は、多くの実施形態を実施するために使用される、コンピュータソフトウェア命令９２およびデータ９４（例えば、ルーチン３００、４００、５００、および６００を含む、上で詳述された、図３ないし図６のコード）のための揮発性ストレージを提供する。ディスクストレージ９５は、多くの実施形態を実施するために使用される、コンピュータソフトウェア命令９２およびデータ９４のための不揮発性ストレージを提供する。中央プロセッサユニット８４も、システムバス７９に取り付けられ、コンピュータ命令の実行を提供する。
【００２７】
一実施形態においては、プロセッサルーチン９２およびデータ９４は、ソフトウェア命令の少なくとも一部をシステムに提供するコンピュータ可読媒体（例えば、１つまたは複数のＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ディスケット、およびテープなどの、リムーバブル記憶媒体）を含む、（全体として９２で参照される）コンピュータプログラム製品である。コンピュータプログラム製品９２は、当技術分野においてよく知られた、任意の適切なソフトウェアインストール手順によって、インストールされることができる。別の実施形態においては、ソフトウェア命令の少なくとも一部は、ケーブル、通信、および／または無線接続を介して、ダウンロードされてもよい。他の実施形態においては、プログラムは、伝搬媒体（例えば、無線波、赤外線波、レーザ波、音波、またはインターネットなどのグローバルネットワークもしくは他のネットワーク上において伝搬される電波）上の伝搬される信号上に具現化された、コンピュータプログラム伝搬信号製品７５（図７）である。そのような搬送波媒体または信号は、ルーチン／プログラム９２についてのソフトウェア命令の少なくとも一部を提供する。
【００２８】
代替的な実施形態においては、伝搬される信号は、伝搬される媒体上において搬送される、アナログ搬送波またはデジタル信号である。例えば、伝搬される信号は、グローバルネットワーク（例えば、インターネット）、電気通信ネットワーク、または他のネットワーク上において伝搬される、デジタル化された信号であってよい。一実施形態においては、伝搬される信号は、ミリ秒、秒、分の、またはより長い期間にわたって、ネットワーク上において、パケットに収めて送信される、ソフトウェアアプリケーションのための命令など、時間期間にわたって、伝搬媒体上において送信される、信号である。別の実施形態においては、コンピュータプログラム製品９２のコンピュータ可読媒体は、コンピュータプログラム伝搬信号製品について上で説明されたように、伝搬媒体を受信すること、および伝搬媒体内に具現化された伝搬される信号を識別することなどによって、コンピュータシステム５０が受信し、読み取ってよい、伝搬媒体である。一般的に言うと、「搬送波媒体」または一時的搬送波という用語は、上述の一時的信号、伝搬される信号、伝搬される媒体、および記憶媒体などを包含する。他の実施形態においては、プログラム製品９２は、いわゆるサービス型ソフトウェア（ＳａａＳ）、またはエンドユーザをサポートする他のインストールもしくは通信として実施されてよい。
【００２９】
例示的な実施形態が、具体的に示され、説明されたが、添付の特許請求の範囲によって包含される実施形態の範囲から逸脱することなく、形態および細部における様々な変更が、それらに施されてよいことが、当業者には理解されよう。
【図１】
2019121395.tif 000003
【図２Ａ】
2019121395.tif 000004
【図２Ｂ】
2019121395.tif 000005
【図２Ｃ】
2019121395.tif 000006
【図２Ｄ】
2019121395.tif 000007
【図３】
2019121395.tif 000008
【図４】
2019121395.tif 000009
【図５】
2019121395.tif 000010
【図６】
2019121395.tif 000011
【図７】
2019121395.tif 000012
【図８】
2019121395.tif 000013