(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】関連するデータ型間のショートカットパスの生成
(51)【国際特許分類】
G06F 16/242 20190101AFI20241001BHJP
G06F 16/901 20190101ALI20241001BHJP
G06F 9/451 20180101ALI20241001BHJP
【FI】
G06F16/242
G06F16/901
G06F9/451
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024512102
(86)(22)【出願日】2022-07-26
(85)【翻訳文提出日】2024-04-19
(86)【国際出願番号】 US2022038328
(87)【国際公開番号】W WO2023027851
(87)【国際公開日】2023-03-02
(32)【優先日】2021-08-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521550194
【氏名又は名称】タブロー ソフトウェア,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】ヴァーマ,ハーシュ
(72)【発明者】
【氏名】カストゥリ,ラーマクリシュナ
(72)【発明者】
【氏名】ドイル,タイラー,ジェームス-ブーカー
(72)【発明者】
【氏名】ドゥライラジュ,アルン
(72)【発明者】
【氏名】タオ,タオ
【テーマコード(参考)】
5B175
5B376
【Fターム(参考)】
5B175JA02
5B175KA12
5B376FA21
(57)【要約】
実施形態は、データを管理することを目的とする。データ型、データ型関係、ショートカットを含むデータモデルが提供されてもよい。ショートカットのためにデータモデル内の有向パスを決定するためのクエリに応答して、データモデル、ターゲットデータ型、及びソースデータ型に基づいて、候補ノード及び横断エッジを決定することと、候補ノード及び横断エッジに基づいて、ツリーを生成することと、ターゲットデータ型でないツリーのリーフノードを除去することと、重複横断エッジに対応するツリーの重複ブランチを除去することと、残りの候補ノード及び横断エッジに基づいて、ソースデータ型をターゲットデータ型に接続するデータモデル内の有向パスを決定することと、有向パスに基づいて、クエリに対する応答を生成することと、を含むアクションが実行されてもよい。
【特許請求の範囲】
【請求項1】
1つ以上のプロセッサを含むコンピュータを使用してデータを管理するための方法であって、前記方法は、アクションを実行する前記1つ以上のプロセッサによって実行され、前記アクションは、
1つ以上のデータ型、1つ以上のデータ型関係、及び1つ以上のショートカットを含むデータモデルを提供することであって、各データ型は、前記データモデル内のノードによって表され、各データ型関係は、前記データモデル内の一対の有向エッジによって表される、ことと、
ショートカットのために前記データモデル内の有向パスを決定するためのクエリに応答して、
前記ショートカットに基づいて、現在のソースデータ型と現在のターゲットデータ型を決定することと、
前記データモデル、前記現在のターゲットデータ型、及び前記現在のソースデータ型に基づいて、1つ以上の候補ノード及び1つ以上の横断エッジを決定することであって、各横断エッジは、前記データモデルに含まれる2つのデータ型、前記1つ以上の候補ノード、及び前記1つ以上の横断エッジの間のデータ型関係に対応する、ことと、
前記1つ以上の候補ノード及び前記1つ以上の横断エッジに基づいてツリーを生成することと、
前記ツリーの1つ以上のリーフノードを除去することであって、1つ以上の残りのリーフノードは、前記現在のターゲットデータ型に対応する、ことと、
前記ツリーの1つ以上のブランチを除去することであって、前記1つ以上の除去されたブランチは、前記ツリー内の1つ以上の重複横断エッジに対応する、ことと、
前記ツリー内の前記1つ以上の候補ノードの残り、及び前記ツリー内の前記1つ以上の横断エッジの残りに基づいて、前記現在のソースデータ型を前記現在のターゲットデータ型に接続する、前記データモデル内の前記有向パスを決定することと、
前記現在のソースデータ型から前記現在のターゲットデータ型まで前記データモデルを横断する前記有向パスを採用することに基づいて、前記クエリに対する応答を生成することと、を含む、方法。
【請求項2】
前記1つ以上の候補ノード及び前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のクロージャソースデータ型、1つ以上のクロージャターゲットデータ型、及び1つ以上の有向クロージャエッジを提供することと、
前記1つ以上のクロージャソースデータ型、前記1つ以上のクロージャターゲットデータ型、及び前記1つ以上の有向クロージャエッジに基づいて、1つ以上のクロージャを生成することと、
前記ターゲットデータ型及び前記ソースデータ型に関連付けられた前記1つ以上のクロージャの部分に基づいて、前記1つ以上の候補ノードを決定することと、
前記1つ以上のクロージャの前記部分に基づいて、前記1つ以上の横断エッジを決定することと、を含む、請求項1に記載の方法。
【請求項3】
前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のフローソースデータ型、1つ以上のフローターゲットデータ型、及び1つ以上の有向フローエッジを提供することと、
前記1つ以上のフローソースデータ型、前記1つ以上のフローターゲットデータ型、及び前記1つ以上の有向フローエッジに基づいて、1つ以上のフロー境界を生成することであって、各フロー境界は、前記データモデル内の前記1つ以上のデータ型間の遷移境界を示す、ことと、
前記1つ以上の有向フローエッジを前記1つ以上の横断エッジに追加することと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記データモデルに関連付けられた1つ以上の持続ショートカットを提供するためにデータストアを採用することであって、各持続ショートカットは、別のソースデータ型と別のターゲットデータ型との間の別の有向パスを提供する、ことと、
前記1つ以上の持続ショートカットに対応する前記有向パスの1つ以上の部分を決定することに応答して、前記対応する1つ以上の持続ショートカットを前記有向パスの前記1つ以上の部分の代わりにすることと、をさらに含む、請求項1に記載の方法。
【請求項5】
1つ以上の他のデータ型を含むこと、又は1つ以上の他のデータ型関係を含むことに基づいて、前記データモデルを修正することと、
前記修正されたデータモデル及び前記1つ以上のショートカットに基づいて、別の有向パスを生成することと、
前記別の有向パスを、前記有向パスへの代わりとして提供することと、をさらに含む、請求項1に記載の方法。
【請求項6】
前記データモデルを提供することは、前記クエリがない場合に、各ショートカットについて1つ以上の有向パスを自動的に生成することをさらに含む、請求項1に記載の方法。
【請求項7】
前記データモデルを提供することは、、
1つ以上の他のデータ型から構成される1つ以上の複合データ型を提供することと、
同じデータ型を表す前記データモデル内の複数のノードを提供することと、をさらに含む、請求項1に記載の方法。
【請求項8】
データを管理するためのシステムであって、
ネットワークコンピュータであって、前記ネットワークコンピュータは、
少なくとも命令を記憶するメモリと、
アクションを実行する命令を実行する1つ以上のプロセッサと、を含み、前記アクションは、
1つ以上のデータ型、1つ以上のデータ型関係、及び1つ以上のショートカットを含むデータモデルを提供することであって、各データ型は、前記データモデル内のノードによって表され、各データ型関係は、前記データモデル内の一対の有向エッジによって表される、ことと、
ショートカットのために前記データモデル内の有向パスを決定するためのクエリに応答して、
前記ショートカットに基づいて、現在のソースデータ型と現在のターゲットデータ型を決定することと、
前記データモデル、前記現在のターゲットデータ型、及び前記現在のソースデータ型に基づいて、1つ以上の候補ノード及び1つ以上の横断エッジを決定することであって、各横断エッジは、前記データモデルに含まれる2つのデータ型、前記1つ以上の候補ノード、及び前記1つ以上の横断エッジの間のデータ型関係に対応する、ことと、
前記1つ以上の候補ノード及び前記1つ以上の横断エッジに基づいてツリーを生成することと、
前記ツリーの1つ以上のリーフノードを除去することであって、1つ以上の残りのリーフノードは、前記現在のターゲットデータ型に対応する、ことと、
前記ツリーの1つ以上のブランチを除去することであって、前記1つ以上の除去されたブランチは、前記ツリー内の1つ以上の重複横断エッジに対応する、ことと、
前記ツリー内の前記1つ以上の候補ノードの残り、及び前記ツリー内の前記1つ以上の横断エッジの残りに基づいて、前記現在のソースデータ型を前記現在のターゲットデータ型に接続する、前記データモデル内の前記有向パスを決定することと、
前記現在のソースデータ型から前記現在のターゲットデータ型まで前記データモデルを横断する前記有向パスを採用することに基づいて、前記クエリに対する応答を生成することと、を含む、ネットワークコンピュータと、
クライアントコンピュータであって、前記クライアントコンピュータは、
少なくとも命令を記憶するメモリと、
アクションを実行する命令を実行する1つ以上のプロセッサと、を含み、前記アクションは、
前記クエリを提供することを含む、クライアントコンピュータと、を含む、システム。
【請求項9】
前記1つ以上の候補ノード及び前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のクロージャソースデータ型、1つ以上のクロージャターゲットデータ型、及び1つ以上の有向クロージャエッジを提供することと、
前記1つ以上のクロージャソースデータ型、前記1つ以上のクロージャターゲットデータ型、及び前記1つ以上の有向クロージャエッジに基づいて、1つ以上のクロージャを生成することと、
前記ターゲットデータ型及び前記ソースデータ型に関連付けられた前記1つ以上のクロージャの部分に基づいて、前記1つ以上の候補ノードを決定することと、
前記1つ以上のクロージャの前記部分に基づいて、前記1つ以上の横断エッジを決定することと、を含む、請求項8に記載のシステム。
【請求項10】
前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のフローソースデータ型、1つ以上のフローターゲットデータ型、及び1つ以上の有向フローエッジを提供することと、
前記1つ以上のフローソースデータ型、前記1つ以上のフローターゲットデータ型、及び前記1つ以上の有向フローエッジに基づいて、1つ以上のフロー境界を生成することであって、各フロー境界は、前記データモデル内の前記1つ以上のデータ型間の遷移境界を示す、ことと、
前記1つ以上の有向フローエッジを前記1つ以上の横断エッジに追加することと、をさらに含む、請求項8に記載のシステム。
【請求項11】
前記1つ以上のネットワークコンピュータプロセッサは、アクションを実行する命令を実行し、前記アクションは、
前記データモデルに関連付けられた1つ以上の持続ショートカットを提供するためにデータストアを採用することであって、各持続ショートカットは、別のソースデータ型と別のターゲットデータ型との間の別の有向パスを提供する、ことと、
前記1つ以上の持続ショートカットに対応する前記有向パスの1つ以上の部分を決定することに応答して、前記対応する1つ以上の持続ショートカットを前記有向パスの前記1つ以上の部分の代わりにすることと、をさらに含む、請求項8に記載のシステム。
【請求項12】
前記1つ以上のネットワークコンピュータプロセッサは、アクションを実行する命令を実行し、前記アクションは、
1つ以上の他のデータ型を含むこと、又は1つ以上の他のデータ型関係を含むことに基づいて、前記データモデルを修正することと、
前記修正されたデータモデル及び前記1つ以上のショートカットに基づいて、別の有向パスを生成することと、
前記別の有向パスを、前記有向パスへの代わりとして提供することと、をさらに含む、請求項8に記載のシステム。
【請求項13】
前記データモデルを提供することは、前記クエリがない場合に、各ショートカットについて1つ以上の有向パスを自動的に生成することをさらに含む、請求項8に記載のシステム。
【請求項14】
前記データモデルを提供することは、
1つ以上の他のデータ型から構成される1つ以上の複合データ型を提供することと、
同じデータ型を表す前記データモデル内の複数のノードを提供することと、をさらに含む、請求項8に記載のシステム。
【請求項15】
データを管理するための命令を含むプロセッサ可読非一時的記憶媒体であって、1つ以上のプロセッサによる前記命令の実行は、アクションを実行し、前記アクションは、
1つ以上のデータ型、1つ以上のデータ型関係、及び1つ以上のショートカットを含むデータモデルを提供することであって、各データ型は、データモデル内のノードによって表され、各データ型関係は、データモデル内の一対の有向エッジによって表される、ことと、
ショートカットのためにデータモデル内の有向パスを判定するためのクエリに応答して、
前記ショートカットに基づいて、現在のソースデータ型と現在のターゲットデータ型を決定することと、
前記データモデル、前記現在のターゲットデータ型、及び前記現在のソースデータ型に基づいて、1つ以上の候補ノード及び1つ以上の横断エッジを決定することであって、各横断エッジは、前記データモデルに含まれる2つのデータ型、前記1つ以上の候補ノード、及び前記1つ以上の横断エッジの間のデータ型関係に対応する、ことと、
前記1つ以上の候補ノード及び前記1つ以上の横断エッジに基づいてツリーを生成することと、
前記ツリーの1つ以上のリーフノードを除去することであって、1つ以上の残りのリーフノードは、前記現在のターゲットデータ型に対応する、ことと、
前記ツリーの1つ以上のブランチを除去することであって、前記1つ以上の除去されたブランチは、前記ツリー内の1つ以上の重複横断エッジに対応する、ことと、
前記ツリー内の前記1つ以上の候補ノードの残り、及び前記ツリー内の前記1つ以上の横断エッジの残りに基づいて、前記現在のソースデータ型を前記現在のターゲットデータ型に接続する、前記データモデル内の前記有向パスを決定することと、
前記現在のソースデータ型から前記現在のターゲットデータ型まで前記データモデルを横断する前記有向パスを採用することに基づいて、前記クエリに対する応答を生成することと、を含む、媒体。
【請求項16】
前記1つ以上の候補ノード及び前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のクロージャソースデータ型、1つ以上のクロージャターゲットデータ型、及び1つ以上の有向クロージャエッジを提供することと、
前記1つ以上のクロージャソースデータ型、前記1つ以上のクロージャターゲットデータ型、及び前記1つ以上の有向クロージャエッジに基づいて、1つ以上のクロージャを生成することと、
前記ターゲットデータ型及び前記ソースデータ型に関連付けられた前記1つ以上のクロージャの部分に基づいて、前記1つ以上の候補ノードを決定することと、
前記1つ以上のクロージャの前記部分に基づいて、前記1つ以上の横断エッジを決定することと、を含む、請求項15に記載の媒体。
【請求項17】
前記1つ以上の横断エッジを決定することは、
前記データモデルに関連付けられた1つ以上のフローソースデータ型、1つ以上のフローターゲットデータ型、及び1つ以上の有向フローエッジを提供することと、
前記1つ以上のフローソースデータ型、前記1つ以上のフローターゲットデータ型、及び前記1つ以上の有向フローエッジに基づいて、1つ以上のフロー境界を生成することであって、各フロー境界は、前記データモデル内の前記1つ以上のデータ型間の遷移境界を示す、ことと、
前記1つ以上の有向フローエッジを前記1つ以上の横断エッジに追加することと、をさらに含む、請求項15に記載の媒体。
【請求項18】
前記データモデルに関連付けられた1つ以上の持続ショートカットを提供するためにデータストアを採用することであって、各持続ショートカットは、別のソースデータ型と別のターゲットデータ型との間の別の有向パスを提供する、ことと、
前記1つ以上の持続ショートカットに対応する前記有向パスの1つ以上の部分を決定することに応答して、前記対応する1つ以上の持続ショートカットを前記有向パスの前記1つ以上の部分の代わりにすることと、をさらに含む、請求項15に記載の媒体。
【請求項19】
1つ以上の他のデータ型を含むこと、又は1つ以上の他のデータ型関係を含むことに基づいて、前記データモデルを修正することと、
前記修正されたデータモデル及び前記1つ以上のショートカットに基づいて、別の有向パスを生成することと、
前記別の有向パスを、前記有向パスへの代わりとして提供することと、をさらに含む、請求項15に記載の媒体。
【請求項20】
前記データモデルを提供することは、
1つ以上の他のデータ型から構成される1つ以上の複合データ型を提供することと、
同じデータ型を表す前記データモデル内の複数のノードを提供することと、をさらに含む、請求項15に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にデータ可視化に関し、より詳細には、可視化に含まれるオブジェクトに関連付けられたデータの管理に関するが、これに限定されるものではない。
【背景技術】
【0002】
組織が生成し、収集するデータの量は、増加し続けている。このデータは、消費者アクティビティ、製造アクティビティ、顧客サービス、サーバログなど、組織の異なる部分に関連付けられ得る。様々な理由から、そのような組織が膨大なデータのコレクションを効果的に利用することは不便であることがある。場合によっては、データの数量により、収集されたデータを、ビジネス慣行を改善するために効果的に利用することが困難になることがある。したがって、場合によっては、組織は、様々なアプリケーション又はツールを採用して、それらのデータの一部又は全部に基づいて可視化を生成することがある。可視化を採用して、データを表現することにより、組織は、ビジネス運営、販売、顧客情報、従業員情報、重要業績評価指標などの理解を改善することが可能となることがある。場合によっては、高度な可視化は、異なるデータベースを含む組織内の様々なソースからのデータを組み込むか、又はそうでなければそれに依存することがある。場合によっては、多くの異なる可視化が、これらの多様な又は異なるデータソースに依存することがある。多くの場合、オブジェクトとの対話に使用され得る異なる依存オブジェクト間の関係をユーザが識別できるようにすることが重要であり得る。場合によっては、いくつかの異なるデータ型間の関係を手動で決定することは、表現され得る多くの多様な又は異なるデータ型のために、エラーを生じやすいことがある。したがって、本発明は、これらの考察及び他の考察に関してなされたものである。
【図面の簡単な説明】
【0003】
本革新の非限定的かつ非網羅的な実施形態を、以下の図面を参照して説明される。図面では、特に指定しない限り、様々な図を通して、同様の参照番号は同様の部分を指す。記載された革新のより良い理解のために、添付の図面と関連して読まれるべき以下の様々な実施形態の詳細な説明が参照されるだろう。
【0004】
【
図1】様々な実施形態が実装され得るシステム環境を示す。
【
図2】クライアントコンピュータの概略的な実施形態を示す。
【
図3】ネットワークコンピュータの概略的な実施形態を示す。
【
図4】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのシステムの論理アーキテクチャを示す。
【
図5】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのデータ型500の論理概略図を示す。
【
図6】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのスキーマモデル600の論理概略図を示す。
【
図7】様々な実施形態のうちの1つ以上に従って、データモデルの部分であり得るクロージャの論理概略図を示す。
【
図8】様々な実施形態のうちの1つ以上に従って、データモデルのためのデータフロー境界を表すためのデータ構造の表現を示す。
【
図9】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャヒントを表すためのデータ構造の表現を示す。
【
図10】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセスの概要フローチャートを示す。
【
図11】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセスのフローチャートを示す。
【
図12】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャを生成するプロセスのフローチャートを示す。
【
図13】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセスのフローチャートを示す。
【
図14】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャを生成するプロセスのフローチャートを示す。
【
図15】様々な実施形態のうちの1つ以上に従って、持続ショートカットを実行時に生成されたショートカットパスの代わりにするプロセスのフローチャートを示す。
【
図16】様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスに基づいてクエリを処理するプロセスのフローチャートを示す。
【発明を実施するための形態】
【0005】
以下、添付図面を参照して、様々な実施形態をより完全に説明する。これらの添付図面は、本明細書の一部を形成し、本発明が実施され得る特定の例示的な実施形態を例示として示す。しかし、実施形態は、多くの異なる形態で具現化され得、本明細書に記載される実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態は、本開示が十分かつ完全であり、実施形態の範囲を当業者に十分に伝達するように提供される。とりわけ、様々な実施形態は、方法、システム、媒体、又はデバイスであってもよい。したがって、様々な実施形態は、完全なハードウェア実施形態、完全なソフトウェア実施形態、又はソフトウェアとハードウェアの態様を組み合わせた実施形態の形態をとることがある。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0006】
本明細書及び特許請求の範囲の全体を通して、以下の用語は、文脈が明らかに他のことを指示しない限り、本明細書中に明示的に関連付けられた意味をとる。本明細書使用される場合、「一実施形態では」というフレーズは、必ずしも同じ実施形態を指さないが、同じ実施形態を指してもよい。さらに、本明細書使用される場合、「別の実施形態では」というフレーズは、必ずしも同じ実施形態を指さないが、同じ実施形態を指してもよい。したがって、以下に説明するように、本発明の範囲又は精神から逸脱することなく、様々な実施形態を容易に組み合わされてもよい。
【0007】
追加的に、本明細書で使用される場合、用語「又は」は、包括的な「又は」演算子であり、文脈が明らかに他のことを指示しない限り、用語「及び/又は」と等価である。用語「~に基づく」は、排他的ではなく、文脈が明らかに他のことを指示しない限り、説明されていない追加の要因に基づくことを可能にする。追加的に、本明細書全体を通して、「a」、「an」、及び「the」の意味は、複数の参照を含む。「in」の意味は、「in」及び「on」を含む。
【0008】
例えば、実施形態では、以下の用語は、文脈が明らかに他のことを指示しない限り、対応する意味に従って本明細書において使用される。
【0009】
本明細書で使用される場合、用語「エンジン」は、ハードウェア、又はC、C++、Objective-C、COBOL、Java(登録商標)、Kotlin、PHP、Perl、JavaScript、Ruby、VBScript、C#などのMicrosoft.NET(登録商標)言語などのプログラミング言語で書くことができるソフトウェア命令で具現化された論理を指す。エンジンは、実行可能プログラムにコンパイルされてもよいし、インタプリタ型プログラミング言語で書かれてもよい。ソフトウェアエンジンは、他のエンジンから、又はそれ自体から呼び出し可能であってもよい。本明細書で説明するエンジンは、他のエンジン又はアプリケーションとマージされ得るか、又はサブエンジンに分割され得る1つ以上の論理モジュールを指す。エンジンは、非一時的なコンピュータ可読媒体又はコンピュータ記憶され得、1つ以上の汎用コンピュータに記憶して実行され得、したがって、エンジンを提供するように構成された専用コンピュータを作成することができる。また、いくつかの実施形態において、エンジンの1つ以上の部分は、エンジンのサポートにおいて、又はエンジンの一部として1つ以上の動作を実行するハードウェアデバイス、ASIC、FPGAなどであってもよい。
【0010】
本明細書で使用される場合、用語「データモデル」は、組織によって収集又は維持されるデータに関連付けられた1つ以上のエンティティを表す1つ以上のデータ構造を指す。データモデルは、通常、組織に関連付けられた様々な動作又はアクティビティをモデル化するようにアレンジされる。場合によっては、データモデルは、効率的な記憶、クエリ、索引付け、検索、更新など、データに焦点を当てた様々なアクションを提供又は促進するようにアレンジされる。一般に、データモデルは、データの理解しやすい提示又は可視化を提供するのではなく、データ操作又はデータ管理に関連する特徴を提供するように構成されてもよい。
【0011】
本明細書で使用される場合、用語「データオブジェクト」は、データモデルを含む1つ以上のエンティティ又はデータ構造を指す。場合によっては、データオブジェクトはデータモデルの部分と考えられてもよい。データオブジェクトは、データベース、データソース、テーブル、ワークブック、可視化、ワークフローなどのアイテムのクラス又は種類を表してもよい。
【0012】
本明細書で使用される場合、用語「データオブジェクトクラス」又は「オブジェクトクラス」は、データオブジェクトのクラス、種類、又は型を表す1つ以上のエンティティ又はデータ構造を指す。
【0013】
本明細書で使用される場合、用語「データ型」は、データオブジェクトのクラス又は種類を表すデータオブジェクトを指す。例えば、TableとColumnは各々データ型であってもよいが、Table AとTable AのColumn Bはそれぞれデータ型Tableとデータ型Columnのインスタンスと考えられてもよい。
【0014】
本明細書で使用される場合、用語「スキーマモデル」は、様々なデータ型及びそれらのデータ型間の関係を表すデータ構造を指す。スキーマモデルは、データ型、データ型の関係などを定義するデータモデルと考えられてもよい。
【0015】
本明細書で使用される場合、用語「クロージャ」は、データフロー境界によって分離され得るスキーマモデルのノード及びエッジの部分を指す。場合によっては、クロージャは非公式にスキーマモデルのパーティションと考えられてもよい。スキーマモデルは、複数のクロージャを宣言してもよい。
【0016】
本明細書で使用される場合、用語「データフロー境界」、「フロー境界」、又は「フロー」は、スキーマモデルの部分をクロージャに分離するように定義され得るスキーマモデル内のエッジを指す。スキーマモデルは、複数の境界を宣言してもよい。
【0017】
本明細書で私用される場合、用語「ショートカット」は、ソースデータ型ノードからターゲットデータ型ノードまで延びるスキーマモデル内の宣言された有向パスを指す。ショートカット定義は、少なくともソースデータ型、ターゲットデータ型、及びパス方向を含んでもよい。したがって、完全に実現されたショートカットは、ソースデータ型から、スキーマモデル内のエッジ及びノードで構成されるターゲットデータ型までのスキーマモデル内のパスである。
【0018】
本明細書で使用される場合、「表示モデル」という用語は、1つ以上のハードウェアディスプレイ上に表示される可視化での使用に好適であり得るデータモデルの1つ以上の表現を表す1つ以上のデータ構造を指す。表示モデルは、非オーサリングユーザが利用可能であり得るスタイル設定又はユーザインターフェース特徴を定義してもよい。
【0019】
本明細書で使用される場合、用語「表示オブジェクト」は、表示モデルを含む1つ以上のデータ構造を指す。場合によっては、表示オブジェクトは表示モデルの部分と考えられてもよい。表示オブジェクトは、アイテムの個々のインスタンス、又は可視化で表示され得るアイテムのクラス全体又は種類を表してもよい。いくつかの実施形態において、表示オブジェクトは、データモデルのいくつかの部分のビューを提供するので、ビューと考えられ、又はビューと呼ばれてもよい。
【0020】
本明細書で使用される場合、用語「パネル」は、グラフィカルユーザインターフェース(GUI)内の定義されたジオメトリ(例えば、x、y、z順序)を有するGUI内の領域を指す。パネルは、ユーザに情報を表示するために、又は1つ以上の対話式コントロールをホストするためにアレンジされてもよい。パネルに関連付けられたジオメトリ又はスタイルは、動的ルールを含む設定情報を使用して定義されてもよい。また、場合によっては、ユーザは、移動、表示、非表示、サイズ変更、順序変更などの1つ以上のパネル上でアクションを実行することが可能となってもよい。
【0021】
本明細書で使用される場合、用語「構成情報」は、構成ファイル、データベース、ユーザ入力、組み込みデフォルトなど、又はそれらの組み合わせを含む様々なソースから提供され得る、ルールベースのポリシー、パターンマッチング、スクリプト(例えば、コンピュータ可読命令)などを含み得る情報を指す。
【0022】
以下に、本発明のいくつかの態様の基本的な理解を提供するために、本発明の実施形態を簡単に説明する。この簡単な説明は、広範な概要を意図したものではない。主要な若しくは重要な要素を識別すること、若しくは範囲を明確にすること、又は他の方法で範囲を狭めることを意図したものではない。その目的は、後で提示されるより詳細な説明の前段階として、いくつかの概念を単純化した形態で提示することだけである。
【0023】
簡単に述べると、様々な実施形態は、ネットワークコンピュータを使用してデータを管理することを目的とする。様々な実施形態のうちの1つ以上において、1つ以上のデータ型、1つ以上のデータ型関係、1つ以上のショートカットなどを含むデータモデルは、各データ型がデータモデル内のノードによって表され、各データ型関係がデータモデル内の1対の反対方向のエッジによって表されるように提供されてもよい。
【0024】
様々な実施形態のうちの1つ以上において、ショートカットのためにデータモデル内の有向パスを決定するためのクエリに応答して、ショートカットに基づいて現在のソースデータ型及び現在のターゲットデータ型を決定することと、各横断エッジが、データモデル、1つ以上の候補ノード、及び1つ以上の横断エッジに含まれる2つのデータ型間のデータ型関係に対応し得るように、データモデル、現在のターゲットデータ型、及び現在のソースデータ型に基づいて、1つ以上の候補ノード及び1つ以上の横断エッジを決定することと、1つ以上の候補ノード及び1つ以上の横断エッジに基づいて、ツリーを生成することと、1つ以上の残りのリーフノードが現在のターゲットデータ型に対応するように、ツリーの1つ以上のリーフノードを除去することと、1つ以上の除去されたブランチがツリー内の1つ以上の重複横断エッジに対応し得るように、ツリーの1つ以上のブランチを除去することと、ツリー内の1つ以上の候補ノードの残り、及びツリー内の前記1つ以上の横断エッジの残りに基づいて、現在のソースデータ型を現在のターゲットデータ型に接続する、データモデル内の有向パスを決定することと、現在のソースデータ型から現在のターゲットデータ型までデータモデルを横断するために有向パスを採用することに基づいて、クエリに対する応答を生成することと、を含む、さらなるアクションが実行されてもよい。
【0025】
様々な実施形態のうちの1つ以上において、1つ以上の候補ノード及び1つ以上の横断エッジを決定することは、1つ以上のクロージャソースデータ型、1つ以上のクロージャターゲットデータ型、及びデータモデルに関連付けられ得る1つ以上の有向クロージャエッジを提供すること、1つ以上のクロージャソースデータ型、1つ以上のクロージャターゲットデータ型、及び1つ以上の有向クロージャエッジに基づいて、1つ以上のクロージャを生成すること、ターゲットデータ型及びソースデータ型に関連付けられた1つ以上のクロージャの部分に基づいて、1つ以上の候補ノードを決定すること、1つ以上のクロージャの部分に基づいて、1つ以上の横断エッジを決定することなどを含んでもよい。
【0026】
様々な実施形態のうちの1つ以上において、1つ以上の横断エッジを決定することは、1つ以上のフローソースデータ型、1つ以上のフローターゲットデータ型、及びデータモデルに関連付けられた1つ以上の有向フローエッジを提供すること、各フロー境界がデータモデル内の1つ以上のデータ型間の遷移境界を示すように、1つ以上のフローソースデータ型、1つ以上のフローターゲットデータ型、及び1つ以上の有向フローエッジに基づいて、1つ以上のフロー境界を生成すること、1つ以上の有向フローエッジを1つ以上の横断エッジに追加することなどを含んでもよい。
【0027】
様々な実施形態のうちの1つ以上において、データストアは、各持続ショートカットが、別のソースデータ型と別のターゲットデータ型との間の別の有向パスを提供し得るように、データモデルに関連付けられた1つ以上の持続ショートカットを提供するために採用されてもよく、1つ以上の持続ショートカットに対応する有向パスの1つ以上の部分を決定することに応答して、対応する1つ以上の持続ショートカットを有向パスの1つ以上の部分の代わりにする。
【0028】
様々な実施形態のうちの1つ以上において、データモデルは、1つ以上の他のデータ型を含むこと、又は1つ以上の他のデータ型関係を含むことに基づいて修正されてもよい。いくつかの実施形態において、修正されたデータモデル及び1つ以上のショートカットに基づいて、別の有向パスが生成されてもよい。また、いくつかの実施形態において、その別の有向パスが、有向パスへの代わりして提供されてもよい。
【0029】
様々な実施形態のうちの1つ以上において、データモデルを提供することは、クエリがない場合に、各ショートカットについて1つ以上の有向パスを自動的に生成することを含んでもよい。
【0030】
様々な実施形態のうちの1つ以上において、データモデルを提供することは、1つ以上の他のデータ型から構成され得る1つ以上の複合データ型を提供することと、同じデータ型を表し得るデータモデル内の複数のノードを提供することと、を含んでもよい。
【0031】
例示される動作環境
【0032】
図1は、本発明の実施形態が実施され得る環境の一実施形態の構成要素を示す。本発明を実施するために、構成要素の全てが必要とされるわけではなく、構成要素の配置及びタイプの変更は、本発明の精神又は範囲から逸脱することなく行われてもよい。図示されるように、
図1のシステム100は、ローカルエリアネットワーク(LAN)/ワイドエリアネットワーク(WAN)(ネットワーク)110、無線ネットワーク108、クライアントコンピュータ102~105、可視化サーバコンピュータ116などを含む。
【0033】
クライアントコンピュータ102~105のうちの少なくとも1つの実施形態は、
図2と併せて以下により詳細に説明される。一実施形態では、クライアントコンピュータ102~105のうちの少なくともいくつかは、ネットワーク108、110などの1つ以上の有線又は無線ネットワーク上で動作してもよい。一般に、クライアントコンピュータ102~105は、ネットワークを介して通信して情報を送受信し、様々なオンラインアクティビティ、オフラインアクションなどを実行することができる事実上任意のコンピュータを含んでもよい。一実施形態では、クライアントコンピュータ102~105のうちの1つ以上は、企業又は他のエンティティのための様々なサービスを実行するために、企業又は他のエンティティ内で動作するように構成されてもよい。例えば、クライアントコンピュータ102~105は、ウェブサーバ、ファイアウォール、クライアントアプリケーション、メディアプレーヤ、携帯電話、ゲームコンソール、デスクトップコンピュータなどとして動作するように構成されてもよい。しかし、クライアントコンピュータ102~105は、これらのサービスに制約されず、また、例えば、他の実施形態におけるエンドユーザコンピューティングのように採用されてもよい。本明細書に説明されるようなシステム内には、(
図1に示されるように)より多くの、又はより少ないクライアントコンピュータが含まれてもよく、したがって、実施形態は、採用されるクライアントコンピュータの数又はタイプによって制約されないことを認識されたい。
【0034】
クライアントコンピュータ102として動作し得るコンピュータは、パーソナルコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースの電子デバイス又はプログラム可能な電子デバイス、ネットワークPCなど、有線又は無線の通信媒体を使用して通常接続するコンピュータを含んでもよい。いくつかの実施形態において、クライアントコンピュータ102~105は、別のコンピュータに接続して情報を受信することができる、ラップトップコンピュータ103、モバイルコンピュータ104、タブレットコンピュータ105など、事実上任意のポータブルコンピュータを含んでもよい。しかし、ポータブルコンピュータは、それに限定されず、携帯電話、ディスプレイページャ、無線周波数(RF)デバイス、赤外線(IR)デバイス、パーソナルデジタルアシスタント(PDA)、ハンドヘルドコンピュータ、ウェアラブルコンピュータ、1つ以上の先行するコンピュータを組み合わせた統合デバイスなどの他のポータブルコンピュータも含んでもよい。そのため、クライアントコンピュータ102~105は、能力及び特徴に関して通常広範囲にわたる。さらに、クライアントコンピュータ102~105は、ブラウザや他のウェブベースのアプリケーションを含む様々なコンピューティングアプリケーションにアクセスしてもよい。
【0035】
ウェブ対応のクライアントコンピュータは、ウェブを介して要求を送信し、応答を受信するように構成されているブラウザアプリケーションを含んでもよい。ブラウザアプリケーションは、事実上任意のウェブベースの言語を採用して、グラフィックス、テキスト、マルチメディアなどを受信し、表示するように構成されてもよい。一実施形態では、ブラウザアプリケーションは、メッセージを表示し送信するために、JavaScript、HTML(HyperText Markup Language)、XML(eXtensible Markup Language)、JSON(JavaScript Object Notation)、CSS(Cascading Style Sheets)など、又はそれらの組み合わせを採用することが可能になる。一実施形態では、クライアントコンピュータのユーザは、ブラウザアプリケーションを採用して、ネットワークを介して(オンラインで)様々なアクティビティを実行してもよい。しかし、別のアプリケーションがまた、様々なオンラインアクティビティを実行するように使用されてもよい。
【0036】
クライアントコンピュータ102~105はまた、別のコンピュータ間でコンテンツを送受信するように構成されている少なくとも1つの他のクライアントアプリケーションを含んでもよい。クライアントアプリケーションは、コンテンツを送受信する機能などを含んでもよい。クライアントアプリケーションは、さらに、タイプ、能力、名前などを含む、それ自体を識別する情報を提供してもよい。一実施形態では、クライアントコンピュータ102~105は、IP(Internet Protocol)アドレス、電話番号、MIN(Mobile Identification Number)、ESN(electronic serial number)、クライアント証明書、又は他のデバイス識別子を含む様々なメカニズムのいずれかを通じて、それら自身を一意に識別してもよい。このような情報は、他のクライアントコンピュータ、可視化サーバコンピュータ116、又は他のコンピュータ間で送信される1つ以上のネットワークパケットなどで提供されてもよい。
【0037】
クライアントコンピュータ102~105は、可視化サーバコンピュータ116などの別のコンピュータによって管理され得るエンドユーザアカウントにエンドユーザがログインすることを可能にするクライアントアプリケーションを含むようにさらに構成され得る。このようなエンドユーザアカウントは、一つの非限定的な例では、エンドユーザが、一つの非限定的な例では、プロジェクト管理、ソフトウェア開発、システム管理、構成管理、検索アクティビティ、ソーシャルネットワーキングアクティビティ、様々なウェブサイトの閲覧、他のユーザとの通信などを含む、1つ以上のオンラインアクティビティを管理することが可能となるように構成され得る。また、クライアントコンピュータは、ユーザが、可視化サーバコンピュータ116によって提供されるレポート、対話型ユーザインターフェース、又は結果を表示することが可能となるようにアレンジされてもよい。
【0038】
無線ネットワーク108は、クライアントコンピュータ103~105及びその構成要素をネットワーク110に結合するように構成されている。無線ネットワーク108は、クライアントコンピュータ103~105にインフラストラクチャ指向の接続を提供するために、スタンドアロンアドホックネットワークなどをさらにオーバーレイし得る様々な無線サブネットワークのいずれかを含んでもよい。このようなサブネットワークは、メッシュネットワーク、無線LAN(WLAN)ネットワーク、セルラネットワークなどを含んでもよい。一実施形態では、システムは、複数の無線ネットワークを含んでもよい。
【0039】
無線ネットワーク108は、無線リンクなどによって接続された端末、ゲートウェイ、ルータなどの自律システムをさらに含んでもよい。これらのコネクタは、自由にかつランダムに移動し、それら自身を任意に編成するように構成されてもよく、その結果、無線ネットワーク108のトポロジーは急速に変更されてもよい。
【0040】
無線ネットワーク108は、セルラシステム、WLAN、無線ルータ(WR)メッシュなどのための第2(2G)、第3(3G)、第4(4G)、第5(5G)世代無線アクセスを含む複数のアクセス技術をさらに採用してもよい。2G、3G、4G、5Gなどのアクセス技術、及び将来のアクセスネットワークは、様々な程度のモビリティを有するクライアントコンピュータ103~105などのモバイルコンピュータのための広域カバレッジを可能にしてもよい。一つの非限定的な例では、無線ネットワーク108は、GSM(Global System for Mobile communications)、GPRS(General Packet Radio Services )、EDGE(Enhanced Data GSM Environment)、CDMA(code division multiple access)、TDMA(time division multiple access)、WCDMA(登録商標)(Wideband Code Division Multiple Access)、HSDPA(High Speed Downlink Packet Access)、LTE(Long Term Evolution)などの無線ネットワークアクセスを介して無線接続を可能にしてもよい。本質的に、無線ネットワーク108は、クライアントコンピュータ103~105と別のコンピュータ、ネットワーク、クラウドベースのネットワーク、クラウドインスタンスなどとの間で情報し得る事実上任意の無線通信メカニズムを含んでもよい。
【0041】
ネットワーク110は、ネットワークコンピュータを、無線ネットワーク108などを介して、可視化サーバコンピュータ116、クライアントコンピュータ102、及びクライアントコンピュータ103~105を含む他のコンピュータと結合するように構成されている。ネットワーク110は、1つの電子デバイスから別の電子デバイスへ情報を通信するために、任意の形態のコンピュータ可読媒体を採用することが可能となる。また、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ユニバーサルシリアルバス(USB)ポート、イーサネット(登録商標)ポート、他の形態のコンピュータ可読媒体、又はそれらの任意の組み合わせを介するような直接接続に加えて、インターネットを含むことができる。異なるアーキテクチャやプロトコルに基づくものを含む、相互接続されたLANのセットでは、ルータはLAN間のリンクとして機能し、1つから別へのメッセージの送信を可能にする。追加的に、LAN内の通信リンクは、通常、ツイストワイヤペア又は同軸ケーブルを含み、ネットワーク間の通信リンクは、アナログ電話回線、T1、T2、T3、及びT4を含む完全又は部分専用デジタル回線、又は例えばEキャリア、ISDN(Integrated Services Digital Network)、DSL(Digital Subscriber Line)、衛星リンクを含む無線リンク、又は当業者に知られている他の通信リンクを含む他のキャリアメカニズムを利用してもよい。さらに、通信リンクは、限定されるものではないが、例えば、DS-0、DS-1、DS-2、DS-3、DS-4、OC-3、OC-12、OC-48などを含む様々なデジタルシグナリング技術のうちのいずれかをさらに採用してもよい。さらに、リモートコンピュータ及び他の関連する電子デバイスは、モデム及び一時的な電話リンクを介してLAN又はWANのいずれかにリモート接続され得る。一実施形態では、ネットワーク110は、IP(Internet Protocol)の情報を転送するように構成されてもよい。
【0042】
追加的に、通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のトランスポートメカニズムを具現化し、任意の情報非一時的配信媒体又は一時的配信媒体を含む。例として、通信媒体は、ツイストペア、同軸ケーブル、光ファイバ、導波管、及び他の有線媒体などの有線媒体と、音響、RF、赤外線、及び他の無線媒体などの無線媒体とを含む。
【0043】
また、可視化サーバコンピュータ116の一実施形態は、
図3と併せて以下により詳細に説明される。
図1は、可視化サーバコンピュータ116を単一のコンピュータとして示しているが、革新又は実施形態は、そのように限定されない。例えば、可視化サーバコンピュータ116などの1つ以上の機能は、1つ以上の別個のネットワークコンピュータに分散されてもよい。さらに、1つ以上の実施形態では、可視化サーバコンピュータ116は、複数のネットワークコンピュータを使用して実装されてもよい。さらに、様々な実施形態のうちの1つ以上において、可視化サーバコンピュータ116などは、1つ以上のクラウドネットワーク内の1つ以上のクラウドインスタンスを使用して実装されてもよい。したがって、これらの革新及び実施形態は、単一の環境に限定されるものと解釈されるべきではなく、他の構成及び他のアーキテクチャも想定される。
【0044】
例示的なクライアントコンピュータ
【0045】
図2は、図示されたものよりも多くの、又は少ない構成要素を含み得るクライアントコンピュータ200の一実施形態を示す。クライアントコンピュータ200は、例えば、
図1に示されるモバイルコンピュータ又はクライアントコンピュータの1つ以上の実施形態を表してもよい。
【0046】
クライアントコンピュータ200は、バス228を介してメモリ204と通信するプロセッサ202を含んでもよい。クライアントコンピュータ200は、電源230、ネットワークインターフェース232、オーディオインターフェース256、ディスプレイ250、キーパッド252、照明器254、ビデオインターフェース242、入出力インターフェース238、触覚インターフェース264、GPS(global positioning systems)受信機258、オープンエアジェスチャインターフェース260、温度インターフェース262、カメラ240、プロジェクタ246、ポインティングデバイスインターフェース266、プロセッサ可読固定記憶デバイス234、及びプロセッサ可読取外し可能記憶デバイス236も含んでもよい。クライアントコンピュータ200は、任意選択で、基地局(図示せず)と、又は直接別のコンピュータと通信してもよい。また、一実施形態では、図示しないが、クライアントコンピュータ200の向きを測定又は維持するために、クライアントコンピュータ200内でジャイロスコープが採用されてもよい。
【0047】
電源230は、クライアントコンピュータ200に電力を提供してもよい。再充電可能又は再充電不可能なバッテリが、電力を提供するために使用されてもよい。電力は、ACアダプタ、又はバッテリを補充又は再充電する電力供給式ドッキングクレードルなどの外部電源によって提供されてもよい。
【0048】
ネットワークインターフェース232は、クライアントコンピュータ200を1つ以上のネットワークに結合するための回路機構を含み、OSIモデル、GSM、CDMA、TDMA(time division multiple access)、UDP、TCP/IP、SMS、MMS、GPRS、WAP、UWB、WiMax、SIP/RTP、GPRS、EDGE、WCDMA(登録商標)、LTE、UMTS、OFDM、CDMA2000、EV-DO、HSDPA、又は他の様々な無線通信プロトコルのいずれかの任意の部分を実装するプロトコル及び技術を含むがこれらに限定されない1つ以上の通信プロトコル及び技術と共に使用するように構築されている。ネットワークインターフェース232は、送受信機、送受信デバイス、又はネットワークインターフェースカード(NIC)として知られることもある。
【0049】
オーディオインターフェース256は、人間の声の音のようなオーディオ信号を生成し、受信するようにアレンジされてもよい。例えば、オーディオインターフェース256は、スピーカ及びマイクロフォン(図示せず)に結合されて、他のものとの通信を可能にするか、又は、何らかのアクションに対するオーディオ肯定応答を生成してもよい。オーディオインターフェース256内のマイクロフォンはまた、例えば、音声認識を使用し、音に基づいてタッチを検出するなど、クライアントコンピュータ200への入力又はクライアントコンピュータの制御のために使用され得る。
【0050】
ディスプレイ250は、液晶ディスプレイ(LCD)、ガスプラズマ、電子インク、発光ダイオード(LED)、有機LED(OLED)、又はコンピュータと共に使用することができる任意の他のタイプの光反射型もしくは光透過型ディスプレイであってもよい。ディスプレイ250は、スタイラス又は人間の手からの指などの物体からの入力を受信するようにアレンジされたタッチインターフェース244を含んでもよく、抵抗、容量、表面弾性波(SAW)、赤外線、レーダー、又は他の技術を使用して、タッチ又はジェスチャを感知してもよい。
【0051】
プロジェクタ246は、リモートハンドヘルドプロジェクタ、又はリモート壁又はリモートスクリーンなどの任意の他の反射オブジェクト上に画像を投影することができる一体型プロジェクタであってもよい。
【0052】
ビデオインターフェース242は、静止画、ビデオセグメント、赤外線ビデオなどのビデオ画像を捕捉するようにアレンジされてもよい。例えば、ビデオインターフェース242は、デジタルビデオカメラ、ウェブカメラなどに結合されてもよい。ビデオインターフェース242は、レンズ、画像センサ、及び他の電子機器を含んでもよい。イメージセンサは、相補型金属酸化物半導体(CMOS)集積回路、電荷結合素子(CCD)、又は光を感知するための他の任意の集積回路を含んでもよい。
【0053】
キーパッド252は、ユーザからの入力を受信するようにアレンジされた任意の入力デバイスを含んでもよい。例えば、キーパッド252は、押しボタン数字ダイヤル、又はキーボードを含んでもよい。キーパッド252はまた、画像の選択及び送信に関連付けられたコマンドボタンを含んでもよい。
【0054】
照明器254は、状態指標を提供するか、又は光を提供してもよい。照明器254は、特定の期間にわたって、又はイベントメッセージに応答して、アクティブのままであってもよい。例えば、照明器254がアクティブであるときに、照明器は、キーパッド252上のボタンをバックライトで照らし、クライアントコンピュータが電力供給されている間、オンのままであってもよい。また、照明器254は、別のクライアントコンピュータにダイヤルするなどの特定のアクションが実行されるときに、これらのボタンを様々なパターンで、バックライトで照らしてもよい。照明器254はまた、クライアントコンピュータの透明又は半透明のケース内に位置決めされた光源をアクションに応答して照明させてもよい。
【0055】
さらに、クライアントコンピュータ200はまた、キー、デジタル証明書、パスワード、パスフレーズ、二要素認証情報などのセキュリティ/暗号情報を生成、記憶、又は使用するための追加の耐タンパ性保護手段を提供するためのハードウェアセキュリティモジュール(HSM)268を含んでもよい。いくつかの実施形態において、ハードウェアセキュリティモジュールを採用して、1つ以上の標準公開鍵インフラストラクチャ(PKI)をサポートしてもよく、ペアなどを生成、管理、又は記憶してもよい。いくつかの実施形態において、HSM268は、スタンドアロンコンピュータであってもよく、他の場合には、HSM268は、クライアントコンピュータに追加され得るハードウェアカードとしてアレンジされてもよい。
【0056】
クライアントコンピュータ200はまた、外部周辺デバイス、又は他のクライアントコンピュータ及びネットワークコンピュータなどの他のコンピュータと通信するための入出力インターフェース238を含んでもよい。周辺デバイスは、オーディオヘッドセット、仮想現実ヘッドセット、ディスプレイスクリーン眼鏡、リモートスピーカシステム、リモートスピーカ及びマイクロフォンシステムなどを含んでもよい。入出力インターフェース238は、USB(Universal Serial Bus)、赤外線、WiFi、WiMax、Bluetooth(登録商標)などの1つ以上の技術を利用することができる。
【0057】
入出力インターフェース238はまた、地理的位置情報(例えば、GPS)を決定し、電力状態を監視し(例えば、電圧センサ、電流センサ、周波数センサなど)、天候を監視する(例えば、サーモスタット、気圧計、風速計、湿度検出器、降水量スケールなど)などのための1つ以上のセンサを含んでもよい。センサは、クライアントコンピュータ200の外部にあるデータを収集又は測定する1つ以上のハードウェアセンサであってもよい。
【0058】
触覚インターフェース264は、クライアントコンピュータのユーザに触覚フィードバックを提供するようにアレンジされてもよい。例えば、触覚インターフェース264は、コンピュータの別のユーザが電話をかけているときに、特定の方法でクライアントコンピュータ200を振動させるために採用されてもよい。温度インターフェース262は、温度測定入力又は温度変化出力をクライアントコンピュータ200のユーザに提供するために使用されてもよい。オープンエアジェスチャインターフェース260は、例えば、単一又はステレオのビデオカメラ、レーダー、ユーザが保持又は装着するコンピュータ内部のジャイロセンサなどを使用することによって、クライアントコンピュータ200のユーザの物理的ジェスチャを感知してもよい。カメラ240は、クライアントコンピュータ200のユーザの物理的な目の動きを追跡するために使用されてもよい。
【0059】
GPSトランシーバ258は、地球の表面上のクライアントコンピュータ200の物理的座標を決定することができ、これは、通常、場所を緯度及び経度値として出力する。GPSトランシーバ258は、限定されるものではないが、三角測量、AGPS(assisted GPS)、E-OTD(Enhanced Observed Time Difference)、CI(Cell Identifier)、SAI(Service Area Identifier)、ETA(Enhanced Timing Advance)、BSS(Base Station Subsystem)などを含む他の地理的測位メカニズムを採用して、地球表面上のクライアントコンピュータ200の物理的場所をさらに決定することができる。異なる条件下では、GPSトランシーバ258は、クライアントコンピュータ200の物理的場所を決定することができることが理解される。しかし、1つ以上の実施形態では、クライアントコンピュータ200は、他の構成要素を介して、例えば、MAC(Media Access Control)アドレス、IPアドレスなどを含む、クライアントコンピュータの物理的場所を決定するために使用され得る他の情報を提供し得る。
【0060】
様々な実施形態のうちの少なくとも1つでは、オペレーティングシステム206、クライアントディスプレイエンジン222、他のクライアントアプリ224、ウェブブラウザ226などのアプリケーションは、地理的位置情報を採用して、タイムゾーン、言語、通貨、カレンダーフォーマットなどの1つ以上のローカル化特徴を選択するようにアレンジされてもよい。ローカル化特徴は、ドキュメント、可視化、表示オブジェクト、表示モデル、アクションオブジェクト、ユーザインターフェース、レポート、及び内部プロセス又はデータベースで使用されてもよい。様々な実施形態のうちの少なくとも1つでは、ローカル化情報を選択するために使用される地理的場所情報は、GPS258によって提供されてもよい。また、いくつかの実施形態において、地理的場所情報は、無線ネットワーク108又はネットワーク111などのネットワークを介して1つ以上の地理的場所情報プロトコルを使用して提供される情報を含んでもよい。
【0061】
ヒューマンインターフェース構成要素は、クライアントコンピュータ200から物理的に分離された周辺デバイスとすることができ、クライアントコンピュータ200へのリモート入力又は出力を可能にする。例えば、ディスプレイ250又はキーボード252などのヒューマンインターフェース構成要素を介して本明細書に説明されるようにルーティングされる情報は、代わりに、ネットワークインターフェース232を介して、リモートに位置する適切なヒューマンインターフェース構成要素にルーティングされ得る。リモートにあり得るヒューマンインターフェース周辺構成要素の例は、オーディオデバイス、ポインティングデバイス、キーパッド、ディスプレイ、カメラ、プロジェクタなどを含むが、これらに限定されない。これらの周辺構成要素は、Bluetooth(登録商標)、Zigbee(登録商標)などのようなピコネットワークを介して通信してもよい。このような周辺ヒューマンインターフェース構成要素を有するクライアントコンピュータの1つの非限定的な例は、ウェアラブルコンピュータであり、これは、別個に位置するクライアントコンピュータとリモート的に通信して、壁又はユーザの手などの反射面上にピコプロジェクタによって投影された画像の部分に対するユーザのジェスチャを感知する1つ以上のカメラと共に、リモートピコプロジェクタを含む可能性がある。
【0062】
クライアントコンピュータは、ウェブページ、ウェブベースのメッセージ、グラフィックス、テキスト、マルチメディアなどを送受信するように構成されているウェブブラウザアプリケーション226を含み得る。クライアントコンピュータのブラウザアプリケーションは、無線アプリケーションプロトコルメッセージ(WAP)などを含む、事実上任意のプログラミング言語を採用してもよい。1つ以上の実施形態では、ブラウザアプリケーションは、HDML(Handheld Device Markup Language)、WML(Wireless Markup Language)、WML Script、JavaScript、SGML(Standard Generalized Markup Language)、HTML(HyperText Markup Language)、XML(eXtensible Markup Language)、HTML5などを用いることが可能となる。
【0063】
メモリ204は、RAM、ROM、又は他のタイプのメモリを含んでもよい。メモリ204は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するためのコンピュータ可読記憶媒体(デバイス)の例を示す。メモリ204は、クライアントコンピュータ200の低レベル動作を制御するためのBIOS208を記憶してもよい。メモリは、クライアントコンピュータ200の動作を制御するためのオペレーティングシステム206も記憶してもよい。この構成要素は、UNIX(登録商標)、又はLinux(登録商標)、Microsoft Windows(登録商標)のバージョンのような汎用オペレーティングシステム、又はAndroid(登録商標)、又はApple(登録商標)CorporationのiOSのような専用クライアントコンピュータ通信オペレーティングシステムを含み得ることが理解される。オペレーティングシステムは、Javaアプリケーションプログラムを介してハードウェア構成要素又はオペレーティングシステム動作の制御を可能にするJava仮想マシンモジュールを含むか、又はそれとインターフェースしてもよい。
【0064】
メモリ204は、さらに、クライアントコンピュータ200が、とりわけ、アプリケーション220又は他のデータを記憶するために利用され得る1つ以上のデータストレージ210を含んでもよい。例えば、データストレージ210はまた、クライアントコンピュータ200の様々な能力を記述する情報を記憶するために採用されてもよい。次いで、情報は、通信中にヘッダの一部として送信されること、要求に応じて送信されることなどを含む様々な方法のいずれかに基づいて、別のデバイス又はコンピュータに提供されてもよい。データストレージ210はまた、アドレス帳、仲間リスト、エアリアス、ユーザプロファイル情報などを含むソーシャルネットワーキング情報を記憶するために採用されてもよい。データストレージ210は、さらに、プロセッサ202などのプロセッサがアクションを実行するために使用するプログラムコード、データ、アルゴリズムなどを含んでもよい。一実施形態では、データストレージ210の少なくとも一部はまた、非一時的なプロセッサ可読取り外し可能記憶デバイス236、プロセッサ可読固定記憶デバイス234、又はクライアントコンピュータの外部でさえも含むが、これらに限定されない、クライアントコンピュータ200の別の構成要素上に記憶される可能性がある。
【0065】
アプリケーション220は、クライアントコンピュータ200によって実行されるときに、命令及びデータを送信、受信、又は他の方法で処理するコンピュータ実行可能命令を含んでもよい。アプリケーション220は、例えば、クライアント表示エンジン222、他のクライアントアプリケーション224、ウェブブラウザ226などを含んでもよい。クライアントコンピュータは、クエリ、検索、メッセージ、通知メッセージ、イベントメッセージ、アラート、性能メトリクス、ログデータ、API呼び出しなど、それらの組み合わせの通信を可視化サーバコンピュータと交換するようにアレンジされてもよい。
【0066】
アプリケーションプログラムの他の例は、カレンダー、検索プログラム、電子メールクライアントアプリケーション、IMアプリケーション、SMSアプリケーション、VOIP(Voice Over Internet Protocol)アプリケーション、コンタクトマネージャ、タスクマネージャ、トランスコーダ、データベースプログラム、ワード処理プログラム、セキュリティアプリケーション、スプレッドシートプログラム、ゲーム、検索プログラムなどを含む。
【0067】
追加的に、1つ以上の実施形態(図には示されていない)では、クライアントコンピュータ200は、CPUの代わりに、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、PAL( Programmable Array Logic)など、又はそれらの組み合わせなどの、埋め込み論理ハードウェアデバイスを含んでもよい。埋め込み論理ハードウェアデバイスは、その埋め込み論理を直接実行して、アクションを実行してもよい。また、1つ以上の実施形態(図には示されていない)では、クライアントコンピュータ200は、CPUの代わりに1つ以上のハードウェアマイクロコントローラを含んでもよい。1つ以上の実施形態では、SOC(System On a Chip)などの1つ以上のマイクロコントローラは、自身の埋め込み論理を直接実行して、アクションを実行し、自身の内部メモリ及び自身の外部入出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、アクションを実行してもよい。
【0068】
例示的なネットワークコンピュータ
【0069】
図3は、様々な実施形態のうちの1つ以上を実装するシステムに含まれ得るネットワークコンピュータ300の一実施形態を示す。ネットワークコンピュータ300は、
図3に示されるものよりも多くの、又は少ない構成要素を含んでもよい。しかし、図示の構成要素は、これらの革新を実施するための例示的な実施形態を開示するのに十分である。ネットワークコンピュータ300は、例えば、
図1の1つ以上の可視化サーバコンピュータ116の一実施形態を表してもよい。
【0070】
ネットワークコンピュータ300などのネットワークコンピュータは、バス328を介してメモリ304と通信し得るプロセッサ302を含んでもよい。いくつかの実施形態において、プロセッサ302は、1つ以上のハードウェアプロセッサ、又は1つ以上のプロセッサコアを含んでもよい。場合によっては、1つ以上のプロセッサのうちの1つ以上は、本明細書に説明されるものなど、1つ以上の特殊化されたアクションを実行するように設計された特殊化されたプロセッサであってもよい。ネットワークコンピュータ300はまた、電源330、ネットワークインターフェース332、オーディオインターフェース356、ディスプレイ350、キーボード352、入出力インターフェース338、プロセッサ可読固定記憶デバイス334、及びプロセッサ可読取外し可能記憶デバイス336を含む。電源330は、クライアントコンピュータ300に電力を提供する。
【0071】
ネットワークインターフェース332は、ネットワークコンピュータ300を1つ以上のネットワークに結合するための回路構成を含み、OSIモデル(Open Systems Interconnection model)、GSM(global system for mobile communication)、CDMA(code division multiple access)、TDMA(time division multiple access)、UDP(user datagram protocol)、TCP/IP(transmission control protocol/Internet protocol)、SMS(Short Message Service)、MMS(Multimedia Messaging Service)、GPRS(general packet radio service)、WAP、UWB(ultra-wide band)、IEEE 802.16 WiMax(Worldwide Interoperability for Microwave Access)、SIP/RTP(Session Initiation Protocol/Real-time Transport Protocol)又は様々な他の有線及び無線通信プロトコルのいずれかの部分を実装するプロトコル及び技術を含むが、これらに限定されない1つ以上の通信プロトコル及び技術と共に使用するように構成されている。ネットワークインターフェース332は、送受信機、送受信デバイス、又はネットワークインターフェースカード(NIC)として知られることもある。ネットワークコンピュータ300は、任意選択で、基地局(図示せず)と、又は直接別のコンピュータと通信してもよい。
【0072】
オーディオインターフェース356は、人間の声の音のようなオーディオ信号を生成し、受信するようにアレンジされる。例えば、オーディオインターフェース356は、スピーカ及びマイクロフォン(図示せず)に結合されて、他のものとの通信を可能にするか、又は、何らかのアクションに対するオーディオ肯定応答を生成してもよい。オーディオインターフェース356におけるマイクロフォンはまた、例えば、音声認識を使用して、ネットワークコンピュータ300への入力又はネットワークコンピュータ300の制御のために使用され得る。
【0073】
ディスプレイ350は、液晶ディスプレイ(LCD)、ガスプラズマ、電子インク、発光ダイオード(LED)、有機LED(OLED)、又はコンピュータと共に使用することができる任意の他のタイプの光反射型もしくは光透過型ディスプレイであってもよい。いくつかの実施形態において、ディスプレイ350は、壁又は他の物体に画像を投影することができるハンドヘルドプロジェクタ又はピコプロジェクタであってもよい。
【0074】
ネットワークコンピュータ300はまた、
図3に示されていない外部デバイス又はコンピュータと通信するための入出力インターフェース338も含んでもよい。入出力インターフェース338は、USB(登録商標)、Firewire(登録商標)、WiFi、WiMax、Thunderbolt(登録商標)、赤外線、Bluetooth(登録商標)、Zigbee(登録商標)、シリアルポート、パラレルポートなどの1つ以上の有線又は無線通信技術を利用することができる。
【0075】
また、入出力インターフェース338はまた、地理的位置情報(例えば、GPS)を決定し、電力状態を監視し(例えば、電圧センサ、電流センサ、周波数センサなど)、天候を監視する(例えば、サーモスタット、気圧計、風速計、湿度検出器、降水量スケールなど)などのための1つ以上のセンサを含んでもよい。センサは、ネットワークコンピュータ300の外部にあるデータを収集又は測定する1つ以上のハードウェアセンサであってもよい。ヒューマンインターフェース構成要素は、ネットワークコンピュータ300から物理的に分離され得、ネットワークコンピュータ300へのリモート入力又は出力を可能にする。例えば、ディスプレイ350又はキーボード352などのヒューマンインターフェース構成要素を介してここに説明されるようにルーティングされる情報は、代わりに、ネットワークインターフェース332を介して、ネットワーク上の他の場所に位置する適切なヒューマンインターフェース構成要素にルーティングされ得る。ヒューマンインターフェース構成要素は、コンピュータがコンピュータの人間のユーザから入力を取り、又はコンピュータの人間のユーザに出力を送信することを可能にする任意の構成要素を含む。したがって、マウス、スタイラス、トラックボールなどのポインティングデバイスは、ポインティングデバイスインターフェース358を介して通信し、ユーザ入力を受信してもよい。
【0076】
GPSトランシーバ340は、地球の表面上のネットワークコンピュータ300の物理的座標を決定することができ、これは、通常、場所を緯度及び経度値として出力する。GPSトランシーバ340は、限定されるものではないが、三角測量、AGPS(assisted GPS)、E-OTD(Enhanced Observed Time Difference)、CI(Cell Identifier)、SAI(Service Area Identifier)、ETA(Enhanced Timing Advance)、BSS(Base Station Subsystem)などを含む他の地理的測位メカニズムを採用して、地球表面上のネットワークコンピュータ300の物理的場所をさらに決定することができる。異なる条件下では、GPSトランシーバ340は、ネットワークコンピュータ300の物理的場所を決定することができることが理解される。しかし、1つ以上の実施形態では、ネットワークコンピュータ300は、他の構成要素を介して、例えば、MAC(Media Access Control)アドレス、IPアドレスなどを含む、クライアントコンピュータの物理的場所を決定するために使用され得る他の情報を提供し得る。
【0077】
様々な実施形態のうちの少なくとも1つでは、オペレーティングシステム306、データ管理エンジン322、表示エンジン324、系統エンジン326、ウェブサービス329などのアプリケーションは、地理的場所情報を採用して、タイムゾーン、言語、通貨、カレンダーフォーマットなどの1つ以上のローカル化特徴を選択するようにアレンジされてもよい。ローカル化機能は、ドキュメント、ファイルシステム、ユーザインターフェース、レポート、表示オブジェクト、表示モデル、可視化、及び内部プロセス又はデータベースにおいて使用されてもよい。様々な実施形態のうちの少なくとも1つでは、ローカル化情報を選択するために使用される地理的場所情報は、GPS340によって提供されてもよい。また、いくつかの実施形態において、地理的場所情報は、無線ネットワーク108又はネットワーク111などのネットワークを介して1つ以上の地理的場所情報プロトコルを使用して提供される情報を含んでもよい。
【0078】
メモリ304は、RAM(Random Access Memory)、ROM(Read-Only Memory)、又は他のタイプのメモリを含んでもよい。メモリ304は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するためのコンピュータ可読記憶媒体(デバイス)の例を示す。メモリ304は、ネットワークコンピュータ300の低レベル動作を制御するためのきBIOS(basic input/output system)308を記憶する。メモリは、ネットワークコンピュータ300の動作を制御するためのオペレーティングシステム306も記憶する。この構成要素は、UNIX(登録商標)、又はLinux(登録商標)のバージョンのような汎用オペレーティングシステム、又はMicrosoft CorporationのWindows(登録商標)オペレーティングシステム、又はApple CorporationのOSX(登録商標)オペレーティングシステムのような専用オペレーティングシステムを含んでもよいことが理解される。オペレーティングシステムは、Javaアプリケーションプログラムを介してハードウェア構成要素又はオペレーティングシステム動作の制御を可能にするJava仮想マシンモジュールなどの1つ以上の仮想マシンモジュールを含むか、又はそれらとインターフェースしてもよい。同様に、他のランタイム環境が含まれてもよい。
【0079】
メモリ304は、さらに、ネットワークコンピュータ300が、とりわけ、アプリケーション320又は他のデータを記憶するために利用され得る1つ以上のデータストレージ310を含んでもよい。例えば、データストレージ310はまた、ネットワークコンピュータ300の様々な能力を記述する情報を記憶するために採用されてもよい。次いで、情報は、通信中にヘッダの一部として送信されること、要求に応じて送信されることなどを含む様々な方法のいずれかに基づいて、別のデバイス又はコンピュータに提供されてもよい。データストレージ310はまた、アドレス帳、仲間リスト、エアリアス、ユーザプロファイル情報などを含むソーシャルネットワーキング情報を記憶するために採用されてもよい。データストレージ310は、さらに、プロセッサ302などのプロセッサが以下に説明されるアクションのようなアクションを実行するために使用するプログラムコード、データ、アルゴリズムなどを含んでもよい。一実施形態では、データストレージ310の少なくとも一部はまた、プロセッサ可読取り外し可能記憶デバイス336、プロセッサ可読固定記憶デバイス334、若しくはネットワークコンピュータ300内の任意の他のコンピュータ可読記憶デバイス、又はネットワークコンピュータ300の外部でさえも含むが、これらに限定されない、ネットワークコンピュータ300の別の構成要素上に記憶される可能性がある。データストレージ310は、例えば、データモデル314、表示モデル316、ソースデータ318などを含んでもよい。データモデル314は、1つ以上のデータモデルの1つ以上の部分を表すファイル、ドキュメント、バージョン、プロパティ、メタデータ、データ構造などを記憶してもよい。表示モデル316は、表示モデルを記憶してもよい。ソースデータ318は、データベースを記憶するために使用されるメモリ、又はデータモデル、表示モデルなどの基礎となるデータを与える他のデータソースを表してもよい。
【0080】
アプリケーション320は、ネットワークコンピュータ300によって実行されるときに、メッセージ(例えば、SMS、MMS(Multimedia Messaging Service)、IM(Instant Message)、電子メール、又は他のメッセージ)、オーディオ、ビデオを伝送、受信、又は他の方法で処理し、別のモバイルコンピュータの別のユーザとの通信を可能にするコンピュータ実行可能命令を含んでもよい。アプリケーションプログラムの他の例は、カレンダー、検索プログラム、電子メールクライアントアプリケーション、IMアプリケーション、SMSアプリケーション、VOIP(Voice Over Internet Protocol)アプリケーション、コンタクトマネージャ、タスクマネージャ、トランスコーダ、データベースプログラム、ワード処理プログラム、セキュリティアプリケーション、スプレッドシートプログラム、ゲーム、検索プログラムなどを含む。アプリケーション320は、以下に説明される実施形態のためのアクションを実行するようにアレンジされ得る、データ管理エンジン322、表示エンジン324、系統エンジン326、ウェブサービス329などを含んでもよい。様々な実施形態のうちの1つ以上において、アプリケーションのうちの1つ以上は、別のアプリケーションのモジュール又は構成要素として実装されてもよい。さらに、様々な実施形態のうちの1つ以上において、アプリケーションは、オペレーティングシステム拡張、モジュール、プラグインなどとして実装されてもよい。
【0081】
さらに、様々な実施形態のうちの1つ以上において、データ管理エンジン322、表示エンジン324、系統エンジン326、ウェブサービス329などは、クラウドベースのコンピューティング環境で動作してもよい。様々な実施形態のうちの1つ以上において、管理プラットフォームを含むこれらのアプリケーション及び他のアプリケーションは、クラウドベースのコンピューティング環境において管理され得る仮想マシン又は仮想サーバ内で実行されてもよい。様々な実施形態のうちの1つ以上において、この文脈では、アプリケーションは、クラウドコンピューティング環境によって自動的に管理される性能及びスケーリングの考慮事項に応じて、クラウドベース環境内の1つの物理ネットワークコンピュータから別の物理ネットワークコンピュータに流れてもよい。同様に、様々な実施形態のうちの1つ以上において、データ管理エンジン322、表示エンジン324、ウェブサービス329など専用の仮想マシン又は仮想サーバが、自動的にプロビジョニング及びデコミッショニングされてもよい。
【0082】
また、様々な実施形態のうちの1つ以上において、データ管理エンジン322、表示エンジン324、系統エンジン326、ウェブサービス329などは、1つ以上の特定の物理ネットワークコンピュータに結び付けられるのではなく、クラウドベースのコンピューティング環境で実行される仮想サーバ内に位置してもよい。
【0083】
さらに、ネットワークコンピュータ300はまた、キー、デジタル証明書、パスワード、パスフレーズ、二要素認証情報などのセキュリティ/暗号情報を生成、記憶、又は使用するための追加の耐タンパ性保護手段を提供するためのハードウェアセキュリティモジュール(HSM)360を含んでもよい。いくつかの実施形態において、ハードウェアセキュリティモジュールを採用して、1つ以上の標準公開鍵インフラストラクチャ(PKI)をサポートしてもよく、ペアなどを生成、管理、又は記憶してもよい。いくつかの実施形態において、HSM360は、スタンドアロンコンピュータであってもよく、他の場合には、HSM360は、ネットワークコンピュータにインストールされ得るハードウェアカードとしてアレンジされてもよい。
【0084】
追加的に、1つ以上の実施形態(図には示されていない)では、ネットワークコンピュータ300は、CPUの代わりに、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、PAL( Programmable Array Logic)など、又はそれらの組み合わせなどの、埋め込み論理ハードウェアデバイスを含んでもよい。埋め込み論理ハードウェアデバイスは、その埋め込み論理を直接実行して、アクションを実行してもよい。また、1つ以上の実施形態(図には示されていない)では、ネットワークコンピュータ200は、CPUの代わりに1つ以上のハードウェアマイクロコントローラを含んでもよい。1つ以上の実施形態では、SOC(System On a Chip)などの1つ以上のマイクロコントローラは、自身の埋め込み論理を直接実行して、アクションを実行し、自身の内部メモリ及び自身の外部入出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、アクションを実行してもよい。
【0085】
例示的な論理システムアーキテクチャ
【0086】
図4は、様々な実施形態の1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのシステム400の論理アーキテクチャを示す。様々な実施形態のうちの1つ以上において、システム400は、1つ以上のデータベースオブジェクトから1つ以上の可視化に及ぶ様々なデータオブジェクトから構成され得るデータモデル402などの様々な構成要素を含んでもよい。この例において、データモデル402は、データベースオブジェクト404、データベースオブジェクト406、テーブルオブジェクト408、テーブルオブジェクト410、テーブルオブジェクト412、ワークフローオブジェクト414、データソースオブジェクト416、データソースオブジェクト418、ワークブックオブジェクト420、シートオブジェクト422、及びシートオブジェクト424を含む。
【0087】
様々な実施形態のうちの1つ以上において、可視化サーバコンピュータ116などの可視化サーバコンピュータは、可視化を生成するために使用され得る情報を表すために、データモデル402などのデータモデルを採用するようにアレンジされ得る。また、いくつかの実施形態において、データモデルを使用して、ユーザ、オーサーなどを含む可視化システム内の他のアクターを管理してもよい。
【0088】
この例において、データモデル402は、データオブジェクト404及びデータオブジェクト406などの1つ以上のルートレベルデータオブジェクトを有してもよい。データオブジェクト404及びデータオブジェクト406は、データモデルを駆動する情報のソースであり得るデータベースを表す。例えば、データオブジェクト404は、組織の一部に関連付けられたSQL RDBMSを表してもよく、一方、データオブジェクト406は、別の情報プロバイダ又は他のデータベースへのAPIゲートウェイを表してもよい。
【0089】
様々な実施形態のうちの1つ以上において、データオブジェクト408、データオブジェクト410、データオブジェクト412などは、1つ以上のデータベースによって提供され得るテーブル又はテーブル状オブジェクトを表す。データモデルのこのレベルでは、データオブジェクトは、データベースから提供されるエンティティをラップするか、又は他の方法で密接にモデル化すると考えられてもよい。したがって、いくつかの実施形態において、テーブル又はデータベースオブジェクトのプロパティ又は属性は、属性名、データ型、テーブル名、列名などを含むそれらのネイティブ表現を厳密に反映してもよい。例えば、データ管理者は、データベース又はテーブルをデータモデルに「インポート」することが可能とされてもよく、そのため、インポートされたオブジェクトは、ネイティブな形態で利用可能な特徴又は属性の一部又は全部を保持する。場合によっては、いくつかの実施形態において、1つ以上のインポートされたデータオブジェクトは、同様にインポートされ得るメタデータ情報を含んでもよい。
【0090】
様々な実施形態のうちの1つ以上において、インポートされたテーブルオブジェクトを可視化のために使用する前に、データ管理者は、可視化又は可視化オーサーが消費するための情報を準備するために、1つ以上のアクションを実行する必要があってもよい。この例において、ETL(extract-transform-load)オブジェクト414は、可視化で利用可能とされる前に、テーブルオブジェクト410及びテーブルオブジェクト412内の情報に対して何らかの処理を行うETLプロセスを表す。
【0091】
様々な実施形態のうちの1つ以上において、データソース416又はデータソース418などのデータソースオブジェクトは、可視化又は他の表示モデルに組み込むために可視化オーサーが利用可能なデータオブジェクトを表す。いくつかの実施形態において、データソースオブジェクトは、可視化又は可視化オーサーが利用可能にし得るデータベース(例えば、データベース404又はデータベース406)からの情報を管理又は他の方法で形成するためのデータ管理者制御を提供してもよい。例えば、データベース404内の1つ以上のテーブルは、組織が可視化から除外したい機密情報を含むことがある。したがって、いくつかの実施形態において、テーブルオブジェクトからデータソースオブジェクトへのマッピング属性を選択することによって、データ管理者は、基礎となるデータベースからデータがどのように公開されるかを制御してもよい。いくつかの実施形態において、データ管理者は、データソースに含めるために、テーブルオブジェクトから特定の列又は属性を選択することが可能にされてもよい。また、いくつかの実施形態において、テーブルオブジェクト内の属性名(例えば、列名)は、データソース内の異なる名前にマッピングされてもよい。例えば、テーブルオブジェクトにおけるcustomer_identifierという名前のテーブル列は、データソースにおける「Account Number」という名前の属性にマッピングされてもよい。さらに、いくつかの実施形態において、マッピングの他の変換、例えば、データ型変換、集約、フィルタリング、結合などが実行されてもよい。いくつかの実施形態において、広範な又は複雑な変換がETLオブジェクトなどにカプセル化されてもよく、一方、より単純な又はより一般的な変換は、別個のETLオブジェクトを使用せずに可能にされてもよい。
【0092】
様々な実施形態のうちの1つ以上において、エッジ448は、テーブルオブジェクトからデータソースへのマッピングを表す。この例において、エッジ448は、テーブルオブジェクト408の1つ以上の属性(例えば、列)をデータソース416にマッピングする1つ以上のデータ構造を表してもよい。したがって、いくつかの実施形態において、エッジ448は、テーブルオブジェクト408からのどの情報がデータソース416で利用可能であるか、及びテーブルオブジェクト408からの情報が可視化オーサーにどのように見えるかを定義する1つ以上のマッピングルール又は命令を提供するか、又はこれらに関連付けられる。
【0093】
様々な実施形態のうちの1つ以上において、ワークブックオブジェクト420は、シートオブジェクト422又はシートオブジェクト424などの1つ以上のユーザレベルデータオブジェクトに関連付けられ得るデータオブジェクトを表す。いくつかの実施形態において、可視化オーサーは、データソース416又はデータソース418などの1つ以上のデータソースによって提供される情報に基づいて、ワークブックオブジェクト420などのワークブックを設計することが可能にされてもよい。いくつかの実施形態において、可視化オーサーは、1つ以上のシート(例えば、シートオブジェクト422又はシートオブジェクト424)を含むワークブックを設計してもよい。いくつかの実施形態において、シートオブジェクトは、1つ以上の可視化などを含んでもよい。
【0094】
様々な実施形態のうちの1つ以上において、シートオブジェクト422又はシートオブジェクト424は、ユーザによって採用され得る1つ以上の対話型可視化アプリケーション又はレポートを提供する可視化エンジンなどに提供され得る情報の一部又は全部を表してもよい。この例において、シートオブジェクト422又はシートオブジェクト424は、1つ以上のデータベースによって提供され得る情報の1つ以上の可視化をレンダリングするために使用され得るデータ、メタデータ、データ構造などのうちの1つ以上を含むか、又は参照すると考えられてもよい。いくつかの実施形態において、シートは、1つ以上の表示モデル、スタイリング情報、テキスト記述、説明情報、様式化されたグラフィックス、他のシートへのリンクなどを含むようにアレンジされてもよい。
【0095】
図5は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのデータ型500の論理概略図を示す。いくつかの実施形態において、データモデルは、様々なデータ型の様々なデータオブジェクトから構成されてもよい。いくつかの実施形態において、1つ以上のデータ型は、1つ以上の他のデータ型から構成されてもよい。この例において、いくつかの実施形態において、データ型は、データベースデータ型502、テーブルデータ型504、列データ型506、データソースデータ型508、ユーザデータ型510、フィールドデータ型512、列フィールドデータ型514、計算フィールドデータ型516、ワークブックデータ型518、シートデータ型520などを含んでもよい。様々な実施形態のうちの1つ以上において、各データ型は、1つ以上の他のデータ型、又は他のデータ型への1つ以上の参照である1つ以上の属性を含んでもよい。
【0096】
場合によっては、1つ以上の属性は、ストリング、整数、浮動小数点数などのいわゆる組み込みデータ型を含んでもよい。簡潔かつ明確にするために、組み込みデータ型はこの説明では省略される。
【0097】
様々な実施形態のうちの1つ以上において、様々なデータ型が、それらの定義に基づいて、既知の挙動又はデータ制約のセットに関連付けられてもよい。したがって、いくつかの実施形態において、系統エンジンは、プログラム的にデータ型を問い合わせて、それらの構成及び関連するルール又は挙動を決定するようにアレンジされてもよい。
【0098】
さらに、いくつかの実施形態において、データモデルを構成するために定義されたデータ型を採用することにより、可視化プラットフォーム内の他のアプリケーション又はサービスが互いに正しく対話することが可能になる。以下に説明されるように、スキーマモデルは、いくつかのデータ型が他のデータ型で構成される方法をさらに宣言してもよい。
【0099】
図6は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのスキーマモデル600の論理概略図を示す。様々な実施形態のうちの1つ以上において、スキーマモデル600などのスキームモデルは、可視化プラットフォーム内の様々なデータ型が互いにどのように関連し得るかを宣言してもよい。したがって、いくつかの実施形態において、スキーマモデルは、データ型が他のデータ型からどのように構成され得るかを宣言してもよい。
【0100】
様々な実施形態の1つ以上において、1つ以上のデータ型は、本明細書に説明されるように、1つ以上の他のデータ型を構成するために使用され得るため、同じスキーマモデル内に同じデータ型が複数回出現することがある。さらに、様々な実施形態のうちの1つ以上において、スキーマモデルは、有向エッジを使用してデータ型間の関係を表してもよい。しかし、いくつかの場合、いくつかの実施形態において、スキーマモデルは、2つの有向エッジを使用してデータ型間の関係を表してもよく、第1の有向エッジが、1つの方向の関係を表すと考えられ、第2の有向エッジは、反対方向の関係を表すと考えられてもよい。したがって、様々な実施形態のうちの1つ以上において、データモデル又はスキーマモデルにおけるデータ型ノード間のショートカットを決定することは、有向エッジの各ペアによって表される2つの関係を明確にする情報を必要してもよい。
【0101】
この例において、いくつかの実施形態では、テーブルデータ型604は、列データ型606及びデータベースデータ型602への参照によって表される1つ以上の列から構成されてもよい。
【0102】
この例において、いくつかの実施形態では、列データ型606は、列フィールドデータ型608によって表される1つ以上の列フィールドデータ型から構成されてもよい。
【0103】
この例において、いくつかの実施形態では、データソースデータ型612は、フィールドデータ型614及びユーザデータ型610への参照によって表される1つ以上のフィールドから構成されてもよい。
【0104】
この例において、いくつかの実施形態では、計算フィールドデータ型626は、フィールドデータ型628への1つ以上の参照から構成されてもよい。
【0105】
この例において、いくつかの実施形態では、ワークブックデータ型620は、1つ以上のシートデータ型622と、ユーザデータ型616への参照とから構成されてもよい。
【0106】
この例において、いくつかの実施形態では、シートデータタイプ622は、フィールドデータタイプ624によって示される1つ以上のフィールドへの参照から構成されてもよい。
【0107】
様々な実施形態のうちの1つ以上において、スキーマモデルは、1つ以上のデータ型間の1つ以上のショートカットを宣言してもよい。いくつかの実施形態において、ショートカットは、より効率的なクエリを可能にし得るデータ型間の関係と考えられてもよい。この例において、ショートカット630は、データソースデータ型からデータベースデータ型へのショートカットを定義する。同様に、この例において、ショートカット632は、ワークブックデータ型からデータベースデータ型へのショートカットを定義する。ショートカット634は、テーブルデータ型からデータソースデータ型へのショートカットを定義する。ショートカット636は、テーブルデータ型からワークブックデータ型へのショートカットを定義する。ショートカット638は、列フィールドデータ型から列データ型へのショートカットを定義する。この例において、ショートカット638は、列データ型606と列フィールドデータ型608との間の相互関係のペアの中から、明確に、ショートカットパスの方向を明確にする。
【0108】
様々な実施形態のうちの1つ以上において、ショートカットは、他のデータ型(属性又は参照)と同様に、スキーマモデルにおいて定義されるデータ型の一部と考えられてもよい。したがって、いくつかの実施形態において、スキーマモデルを定義するデータ設計者は、他のデータ型へのショートカットの定義を含んでもよい。いくつかの実施形態において、ショートカットは、2つのデータ型間の直接関係又は逆関係を明確にする2つのデータ型間の特定の有向パスを含むデータ構造となるようにアレンジされてもよい。これに対して、いくつかの従来のシステムにおいて、スキーマモデルに含まれる直接/逆関係を明確にするために、スキーマモデル内の2つのデータ型から完全修飾パス定義を手動で宣言することをデータ設計者に要求するものがある。
【0109】
本明細書に開示される革新がない場合、いくつかの従来のシステムでは、ショートカットは、明示的な(完全修飾された)パスで定義され得る。しかし、多くのデータ型を持つ複雑なプロダクションスキーマモデルでは、明示的なパスは長く複雑になることがある。また、スキーマモデルが時間とともに進化するにつれて、明示的なショートカットパスも同様に更新する必要があることがある。しかし、場合によっては、スキーマモデルの一部を修正する組織/個人が、スキーマモデルの他の部分で破損する可能性のある明示的なショートカットパスを認識していないことがある。
【0110】
対照的に、いくつかの実施形態において、完全修飾されたショートカットパスよりも正確に表現することが容易なヒント/定義を提供することによって、データ設計者がショートカットを定義できるように、系統エンジンがアレンジされてもよい。いくつかの実施形態において、ヒントは、ユーザ/データモデル管理者に2つのデータ型間の完全修飾パスを提供することを要求するのではなく、ショートカットの各エンドポイントに名前を付けることを含んでもよい。したがって、いくつかの実施形態において、系統エンジンは、ショートカットに対してスキーマモデルを通して明確な有向パスを自動的に生成するようにアレンジされてもよい。
【0111】
なお、この例において、同じラベルを有するデータ型は、同じデータ型と考えられてもよい。例えば、フィールドデータ型614、フィールドデータ型628、フィールドデータ型624などは、同じデータ型を表すものと考えられてもよい。
【0112】
当業者は、プロダクションスキーマモデルが、ここに示されるより多くの又はより少ないデータ型を含んでもよいことを理解する。
【0113】
図7は、様々な実施形態のうちの1つ以上に従って、データモデルの部分であり得るクロージャ700の論理概略図を示す。様々な実施形態のうちの1つ以上において、以下に説明されるように、クロージャと考えられてもよいデータモデルの1つ以上の部分を決定するように、系統エンジンがアレンジされてもよい。いくつかの実施形態において、系統エンジンは、クロージャとして一緒に分類され得る1つ以上のデータ型を決定するために、1つ以上のアクションを実行するようにアレンジされてもよい。いくつかの実施形態において、クロージャは、データフロー境界によって分離され得るスキーマモデルのノード及びエッジの部分を表す1つ以上のデータ構造であってもよい。場合によっては、クロージャは非公式にスキーマモデルのパーティションと考えられてもよい。上記のように、スキーマモデルは、複数のクロージャを宣言してもよい。
【0114】
この例において、クロージャ700は、データベースデータ型702、テーブルデータ型704、及び列データ型706から構成されてもよい。
【0115】
様々な実施形態のうちの1つ以上において、系統エンジンは、スキーマモデル、データフロー境界、クロージャヒントなどを採用して、スキーマモデル又はデータモデルのためのクロージャを決定するようにアレンジされてもよい。
【0116】
図8は、様々な実施形態のうちの1つ以上に従って、データモデルのためのデータフロー境界を表すためのデータ構造800の表現を示す。
【0117】
様々な実施形態のうちの1つ以上において、データフロー境界は、対応するデータモデル又はスキーマモデルに基づいて、ユーザ(例えば、データモデル作成者、データ設計者など)によって宣言されてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、スキーマモデルにおけるクロージャ間の境界を決定するためにデータフロー境界を採用するようにアレンジされてもよい。
【0118】
以下により詳細に説明されるように、いくつかの実施形態において、系統エンジンは、スキーマモデルを横断して、クロージャにグループ化され得るデータ型を識別するようにアレンジされてもよい。したがって、いくつかの実施形態において、系統エンジンは、クロージャを決定するために横断を停止するための条件を決定するのに役立つデータフロー境界を採用するようにアレンジされてもよい。
【0119】
様々な実施形態のうちの1つ以上において、データフロー境界は、ソースデータ型、ターゲットデータ型、エッジ識別、フロー方向などの様々なフィールドを有するデータ構造であってもよい。
【0120】
この例において、いくつかの実施形態では、1つ以上のデータフロー境界が、データフロー境界アレイ802などのリスト又はアレイにグループ化されてもよい。したがって、この例において、いくつかの実施形態では、データフロー境界804は、データフロー境界を宣言するためのデータ構造を表す。
【0121】
また、この例において、データフロー境界804は、ソースデータ型806、エッジ識別808、ターゲットデータ型810、フロー方向812などの1つ以上のフィールドを含んでもよい。この例において、データフロー境界804は、referencedByFieldsとして識別されるエッジに沿って、列データ型と列フィールドデータ型との間のデータフロー境界を宣言する。いくつかの実施形態において、列フィールドが列と同じクロージャに含まれるべきでないことを決定するために、データフロー境界804を採用するように、系統エンジンがアレンジされてもよい。同様に、データフロー境界アレイ802内の他のデータフロー境界は、クロージャの決定に寄与し得るデータモデル内の他のデータフロー境界を定義してもよい。
【0122】
様々な実施形態のうちの1つ以上において、データフロー境界に対して宣言されたエッジは、クロージャ間のスキーマモデルにおける分離又は境界を描写してもよい。この例において、エッジ識別808は、境界を表すエッジを宣言する。
【0123】
当業者は、データ構造800などのデータ構造が、これらの革新の範囲から逸脱することなく、JSON(図示のように)、XML、構造、オブジェクト、データベーステーブルなどの様々な実装を使用して表され得ることを理解する。
【0124】
また、いくつかの実施形態において、データフロー境界は、ここに示すような別個のデータ構造ではなく、データモデルの他の部分におけるデータ型定義の一部として定義されてもよい。
【0125】
図9は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャヒントを表すためのデータ構造900の表現を示す。
【0126】
様々な実施形態のうちの1つ以上において、クロージャヒントは、対応するデータモデルに基づいてユーザ(例えば、データモデル作成者、データ設計者など)によって宣言されてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、データモデルのためのクロージャを決定するためにクロージャヒントを採用するようにアレンジされてもよい。
【0127】
以下により詳細に説明されるように、いくつかの実施形態において、系統エンジンは、データモデルを横断して、クロージャにグループ化され得るデータ型を識別するようにアレンジされてもよい。したがって、いくつかの実施形態において、系統エンジンは、クロージャにデータ型を含めるための条件を決定するのに役立つクロージャヒントを採用するようにアレンジされてもよい。
【0128】
様々な実施形態のうちの1つ以上において、クロージャヒントは、ソースデータ型、ターゲットデータ型、エッジ識別、フロー方向などの様々なフィールドを有するデータ構造であってもよい。
【0129】
この例において、いくつかの実施形態において、1つ以上のクロージャヒントが、クロージャヒント配列902などのリスト又は配列にグループ化されてもよい。したがって、この例において、いくつかの実施形態では、クロージャヒント904は、クロージャヒントを宣言するためのデータ構造を表す。
【0130】
また、この例において、クロージャヒント904は、ソースデータ型906、エッジ識別908、ターゲットデータ型910、フロー方向912などの1つ以上のフィールドを含んでもよい。この例において、クロージャヒント904は、「table」として識別されるエッジに沿って、列データ型とテーブルデータ型との間のクロージャヒントを宣言する。いくつかの実施形態において、関連するデータ型間にショートカットパスを生成するために採用され得るクロージャを決定するために、クロージャヒント904を採用するように、系統エンジンがアレンジされてもよい。
【0131】
当業者は、データ構造900などのデータ構造が、これらの革新の範囲から逸脱することなく、JSON(図示のように)、XML、構造、オブジェクト、データベーステーブルなどの様々な表現を使用して実装され得ることを理解する。
【0132】
また、いくつかの実施形態において、クロージャヒントは、ここに示すような別個のデータ構造ではなく、データモデルの他の部分におけるデータ型定義の一部として定義されてもよい。
【0133】
一般化された動作
【0134】
図10~
図16は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するための一般化された動作を表す。様々な実施形態のうちの1つ以上において、
図10~
図16と併せて説明されるプロセス1000、1100、1200、1300、1400、1500、及び1600は、
図3のネットワークコンピュータ300などの単一のネットワークコンピュータ上の1つ以上のプロセッサによって実装又は実行されてもよい。他の実施形態では、これらのプロセス又はその部分は、
図3のネットワークコンピュータ300などの複数のネットワークコンピュータによって実装され、又はそれらの上で実行されてもよい。さらに他の実施形態では、これらのプロセス又はその部分は、クラウドベースの環境内のコンピュータなど、1つ以上の仮想化されたコンピュータによって実装され、又はそれらの上で実行されてもよい。しかし、実施形態はそれに限定されず、ネットワークコンピュータ、クライアントコンピュータなどの様々な組み合わせが利用されてもよい。さらに、様々な実施形態の1つ以上において、
図10~
図15と併せて説明されるプロセスは、
図4~
図9と併せて説明されるものなどの様々な実施形態又はアーキテクチャの少なくとも1つに従って、関連するデータ型間にショートカットパスを生成するために使用されてもよい。さらに、様々な実施形態のうちの1つ以上において、プロセス1000、1100、1200、1300、1400、1500、及び1600によって実行されるアクションの一部又は全部は、1つ以上のネットワークコンピュータの1つ以上のプロセッサ上で実行されるデータ管理エンジン322、表示エンジン324、又は系統エンジン326によって部分的に実行されてもよい。
【0135】
図10は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセス1000の概要フローチャートを示す。開始ブロックの後、開始ブロック1002で、様々な実施形態の1つ以上において、データモデルを系統エンジンに提供してもよい。上述のように、データ管理エンジン、表示エンジンなどは、可視化オーサーによって使用され得るデータモデルを生成するようにアレンジされてもよい。データモデル内の様々なデータモデルレイヤー又はデータ型に関連付けられ得るデータオブジェクトを作成するデータ作成者又はデータ管理者。
【0136】
ブロック1004で、様々な実施形態の1つ以上において、1つ以上のショートカット定義が、系統エンジンに提供されてもよい。上述のように、いくつかの実施形態において、ショートカット定義は、ユーザ、データ作成者、データ管理者などによって宣言されてもよい。
多くの場合、新しいデータ型がデータモデルに導入される場合、ショートカット定義がデータモデルに含まれてもよい。いくつかの実施形態において、ショートカット定義を提供して、データモデル内のデータ型の1つ以上のペアの間の有向パスを宣言してもよい。したがって、いくつかの実施形態において、ショートカット定義は、少なくともソースデータ型、ターゲットデータ型、及びフロー方向(例えば、アップ又はダウン)を含んでもよい。場合によっては、データモデルは、データモデルの単純な横断が、本明細書に開示される革新の適用がない場合に曖昧又は不正確な結果を提供する可能性があるような無向グラフ又は部分的無向グラフである可能性があるため、いくつかの流れ方向が必要とされることがある。いくつかの実施形態において、データモデルは、1つ以上のデータ型間の関係のペア(各方向に1つ)を宣言してもよい。いくつかの実施形態において、これらの対になった有向エッジは異なる「方向」を表してもよいので、観察によってショートカットパスを決定することは、ショートカットパスがデータモデルを通ってどの方向をとるべきかを観察から明確にすることができないため、不正確又は曖昧なパス結果を提供してもよい。
【0137】
同様に、いくつかの実施形態において、データモデル内の既存のデータ型の関係が修正され得る場合、ショートカット定義が提供され得る。
【0138】
様々な実施形態のうちの1つ以上において、ショートカット定義は、ユーザが最小限の量の情報を提供することを可能にするようにアレンジされてもよい。しかし、いくつかの実施形態において、ショートカット定義の重要な特徴は、データモデル内の介在するデータ型を考慮することなく、ソースデータ型とターゲットデータ型との間の関係をユーザが明確に定義できるようにすることである。例えば、データ型Aからデータ型Fへの宣言されたショートカットは、データモデル内のデータ型間を横断するために提供され得るA->B->C->D->E->Fの有向パスを生成してもよい。したがって、この例において、データモデルの変更により、ショートカット有向パスがA→B→E→C→D→Fとなるときでも、ショートカット定義が有効なままとなってもよい。対照的に、本明細書に開示される革新がない場合、データモデルに対する変更は、明示的に宣言されたショートカット有向パスを破壊又は無効にする可能性がある。
【0139】
ブロック1006で、様々な実施形態の1つ以上において、系統エンジンは、データモデル内の1つ以上のクロージャを決定するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、ショートカット定義からショートカットパスを生成するための準備として、データモデルを評価して、データモデル内に存在し得る1つ以上のクロージャを決定/識別するように、系統エンジンがアレンジされてもよい。いくつかの実施形態において、クロージャは、様々な特定の条件を満たすデータモデルの部分/パーティションとして定義されてもよい。いくつかの実施形態において、クロージャは、宣言されたデータフロー境界内に適合する関連するデータ型のグループであると考えられてもよい。
【0140】
いくつかの実施形態において、クロージャにグループ化され得るデータ型を決定することは、データモデルに対して宣言され得るデータフロー境界に依存する。上述のように、データフロー境界は、フローソースデータ型、フローターゲットデータ型、及びフロー方向を宣言することによって定義されてもよい。したがって、いくつかの実施形態において、「境界」は、定義された横断方向(フロー方向)におけるソースデータ型とターゲットデータ型との間にある。いくつかの実施形態において、データフロー境界を定義する場所の選択は、データモデルをオーサリング又は使用し得るユーザ、データモデル作成者などのローカル要件に依存する。したがって、様々な実施形態のうちの1つ以上において、クロージャヒントは、ユーザ、データモデル作成者、データ管理者などによって宣言されてもよい。(上記
図8を参照)
【0141】
したがって、いくつかの実施形態において、系統エンジンは、1つ以上のアクションを実行して、データ型をクロージャにグループ化するようにアレンジされてもよい。いくつかの実施形態において、所与のデータ型が、複数のクロージャに含まれ得ることに留意する。
【0142】
様々な実施形態のうちの1つ以上において、系統エンジンは、初期化時に(例えば、系統エンジン又は可視化プラットフォームなどの起動時に)クロージャを生成するようにアレンジされてもよく、又は、場合によっては、クロージャ生成は、ショートカットに関連付けられた最初のクエリが提供され得るまで延期されてもよい。したがって、いくつかの実施形態において、クロージャを生成すべきかどうかを決定するために、構成情報を介して提供されるルール、命令などを採用するように、系統エンジンがアレンジされてもよい。
【0143】
様々な実施形態のうちの1つ以上において、系統エンジンは、系統エンジンが実行中である間、タイムアウトにある間などに、現在のセッションの長さなどの指定された期間、クロージャデータ構造をメモリ又はキャッシュに保持するようにアレンジされてもよい。いくつかの実施形態において、系統エンジンは、1つ以上のクロージャデータ構造の寿命を決定するために、構成情報を介して提供されるルール、命令などを採用するようにアレンジされてもよい。
【0144】
ブロック1008で、様々な実施形態のうちの1つ以上において、系統エンジンは、1つ以上のクロージャ及び1つ以上のショートカット定義に基づいて、1つ以上のショートカット有向パスを生成するようにアレンジされてもよい。
【0145】
様々な実施形態のうちの1つ以上において、系統エンジンは、宣言された各ショートカットについて完全修飾ショートカット有向パスを生成するようにアレンジされてもよい。ショートカット有向パスは、必要に応じて、系統エンジンなどがデータモデル内のデータ型関係を正しく横断することを可能にする。
【0146】
ブロック1010で、様々な実施形態のうちの1つ以上において、生成されたショートカット有向パスを採用して、データモデルに関連付けられた1つ以上のクエリに対する応答を提供するように、系統エンジンがアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、他のアプリケーション、サービス、クライアントなどが、データモデル内の関係に関連付けられたクエリを提供することを可能にするようにアレンジされてもよい。したがって、いくつかの実施形態において、ショートカットに対して生成されたショートカット有向パスを採用して、正しい応答を提供してもよい。いくつかの実施形態において、ショートカット有向パス、いくつかの横断パス、又は他の関係が存在しないことは、曖昧であるか、又は判定不能である可能性がある。
【0147】
次に、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0148】
図11は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセス1100のフローチャートを示す。開始ブロックの後、開始ブロック1102で、様々な実施形態の1つ以上において、データモデルを系統エンジンに提供してもよい。上述のように、データモデル定義は、データモデル作成者、データ設計者、管理者、アプリケーション開発者などのユーザによってオーサリングされてもよい。いくつかの実施形態において、データモデル定義は、1つ以上の他のデータ型から構成され得る1つ以上のデータ型を含んでもよい。
【0149】
ブロック1104で、様々な実施形態の1つ以上において、1つ以上のクロージャヒントが、系統エンジンに対して証明されてもよい。様々な実施形態のうちの1つ以上において、データモデル定義は、1つ以上のクロージャヒント又はクロージャ定義を含んでもよい。上述のように、クロージャは、ローカル要件又はローカル環境を満たすようにグループ化されたデータ型のグループであってもよい。様々な実施形態のうちの1つ以上において、データモデルのための特定のクロージャヒントは、ユーザによって宣言されてもよい。
【0150】
様々な実施形態のうちの1つ以上において、クロージャヒントは、データモデルを定義する構成情報によって提供されてもよい。代替的には、いくつかの実施形態において、クロージャヒントは、データモデルを定義するために使用される情報とは別個であり得るファイル又はデータ構造内に提供されてもよい。いくつかの実施形態において、クロージャヒントは、クロージャを生成するために系統エンジンによって解釈され得るデータ型(ソースデータ型及びターゲットデータ型)、関係(エッジ)、及びフロー方向(アップ/ダウン)を参照する。
【0151】
ブロック1106で、様々な実施形態のうちの1つ以上において、1つ以上のデータフロー境界が、系統エンジンに提供されてもよい。
【0152】
様々な実施形態のうちの1つ以上において、データモデル定義は、1つ以上のデータフロー境界定義を含んでもよい。上述のように、データフロー境界は、ローカル要件又はローカル環境を満たすように宣言されたデータ型間の境界であってもよい。様々な実施形態のうちの1つ以上において、データモデルのための特定のデータフロー境界は、ユーザによって宣言されてもよい。
【0153】
様々な実施形態のうちの1つ以上において、データフロー境界は、データモデルを定義する構成情報によって提供されてもよい。代替的には、いくつかの実施形態において、データフロー境界は、データモデルを定義するために使用される情報とは別個であり得るファイル又はデータ構造内に提供されてもよい。いくつかの実施形態において、データフロー境界は、データフロー境界を生成するために系統エンジンによって解釈され得るデータ型(ソースデータ型及びターゲットデータ型)、関係(エッジ)、及びフロー方向(アップ/ダウン)を参照する。
【0154】
ブロック1108で、様々な実施形態の1つ以上において、関連するデータ型間にショートカットパスを生成するために生成する1つ以上のクロージャを決定するように、系統エンジンがアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、クロージャヒントに基づいて1つ以上のクロージャを生成するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、クロージャヒントによって提供されるクロージャの数を生成するようにアレンジされてもよい。
【0155】
判定ブロック1110では、様々な実施形態のうちの1つ以上において、生成されているクロージャがアップクロージャである場合、制御はブロック1112に流れ、そうでなければ、制御はブロック1114に流れてもよい。様々な実施形態のうちの1つ以上において、クロージャは、アップクロージャ又はダウンクロージャであってもよい。いくつかの実施形態において、アップクロージャは、データモデル内で同じクロージャの他のメンバよりも下又は下流にあると考えられるデータ型の視点又は開始点から生成されたクロージャであってもよい。いくつかの実施形態において、生成されるクロージャに関連付けられたクロージャヒントから、クロージャがアップクロージャであるかダウンクロージャであるかを決定するように、系統エンジンがアレンジされてもよい。同様に、いくつかの実施形態において、ダウンクロージャは、データモデル内で同じクロージャの他のメンバよりも上又は上流にあると考えられるデータ型の視点又は開始点から生成されたクロージャであってもよい。いくつかの実施形態において、アップクロージャ又はダウンクロージャは、生成するために異なる動作を必要とする可能性があるため、区別することができる。
【0156】
ブロック1112で、様々な実施形態の1つ以上において、系統エンジンは、アップクロージャを生成するようにアレンジされてもよい。様々な実施形態のうちの1つ以上では、以下により詳細に説明するように、1つ以上のアクションを実行してアップクロージャを生成するように、系統エンジンがアレンジされてもよい。
【0157】
ブロック1114で、様々な実施形態の1つ以上において、系統エンジンは、ダウンクロージャを生成するようにアレンジされてもよい。様々な実施形態のうちの1つ以上では、以下により詳細に説明するように、1つ以上のアクションを実行してダウンクロージャを生成するように、系統エンジンがアレンジされてもよい。
【0158】
判断ブロック1116では、いくつかの実施形態において、より多くのクロージャが必要とされ得る場合、制御はブロック1108にループバックしてもよく、そうでなければ、制御はブロック1118に流れてもよい。様々な実施形態のうちの1つ以上において、各クロージャヒントについて少なくとも1つのクロージャが生成されるまで、クロージャを生成し続けるように、系統エンジンがアレンジされてもよい。場合によっては、クロージャヒントが、同じデータ型についてアップクロージャとダウンクロージャの両方が生成されるべきであることを宣言してもよい。
【0159】
ブロック1118で、様々な実施形態の1つ以上において、系統エンジンは、1つ以上のクロージャを使用してショートカット有向パスを生成するようにアレンジされてもよい。次に、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0160】
図12は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャを生成するプロセス1200のフローチャートを示す。開始ブロックの後、開始ブロック1202で、様々な実施形態のうちの1つ以上において、ショートカットパスに対するソースデータ型及びターゲットデータ型が、系統エンジンに提供されてもよい。上述のように、系統エンジンには、データモデル定義の一部として(又はそれと共に)、1つ以上のショートカット宣言又はショートカット定義が提供されてもよい。したがって、いくつかの実施形態において、各ショートカット定義は、ソースデータ型及びターゲットデータ型を識別してもよい。いくつかの実施形態では、ショートカット宣言が、JSON、XML、テキストなどを使用して提供されてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、ショートカット宣言を解析してソースデータ型及びターゲットデータ型を決定するようにアレンジされてもよい。いくつかの実施形態において、ソースデータ型及びターゲットデータ型は、ショートカットのエンドポイントと考えられてもよく、一方、系統エンジンは、ソースデータ型からターゲットデータ型へのショートカット有向パスを含む介在データ型を決定するようにアレンジされてもよい。
【0161】
ブロック1204で、様々な実施形態のうちの1つ以上において、系統エンジンは、ソースデータ型に対する「アップ」クロージャに基づいて1つ以上の候補ノードを決定するようにアレンジされてもよい。
【0162】
いくつかの実施形態において、データモデル内のノードは、データ型に対応すると考えられてもよい。また、いくつかの実施形態において、データ型間の関係は、データモデル内のデータ型を表すノードを接続するエッジによって表されてもよい。
【0163】
様々な実施形態のうちの1つ以上において、アップクロージャに含まれるノードは、候補ノードのプールに追加されてもよく、この候補ノードは、ソースデータ型とターゲットデータ型との間のショートカットパスを決定するようにさらに評価されてもよい。
【0164】
ブロック1206で、様々な実施形態のうちの1つ以上において、系統エンジンは、1つ以上の候補ノードに基づいて1つ以上の横断エッジを決定するようにアレンジされてもよい。ソースデータ型に関連付けられたアップクロージャに基づいて候補ノードを収集するのと同様に、アップクロージャに関連付けられたエッジは、評価してショートカットパスを決定してもよい横断エッジのプールに収集されてもよい。
【0165】
ブロック1208で、様々な実施形態のうちの1つ以上において、系統エンジンは、初期候補ノード及び1つ以上の横断エッジに基づいてツリーを生成するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、候補ノード及び横断エッジに基づいてツリーを生成するために候補エッジを横断するように、系統エンジンがアレンジされてもよい。
【0166】
様々な実施形態のうちの1つ以上において、ツリーは、同じデータ型を表してもよい1つ以上の重複ノードと、同じ関係を表す1つ以上のエッジとを含んでもよい。
【0167】
ブロック1210で、様々な実施形態のうちの1つ以上において、系統エンジンは、ターゲットデータ型ではないリーフにつながるツリーの1つ以上のブランチを除去するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、生成されたツリーは、1つ以上のリーフノードを含んでもよい。したがって、いくつかの実施形態において、ターゲットデータ型とは異なるデータ型を表し得るリーフノードが決定されてもよい。いくつかの実施形態において、系統エンジンは、ターゲットデータ型とは異なるデータ型に対応するリーフノードに関連付けられたツリー内のブランチを識別し、破棄するようにアレンジされてもよい。
【0168】
ブロック1212で、様々な実施形態のうちの1つ以上において、系統エンジンは、ツリー内に存在し得る1つ以上の重複エッジを除去するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、重複エッジを識別し、それらをツリーから除去するようにアレンジされてもよい。
【0169】
ブロック1214で、様々な実施形態のうちの1つ以上において、系統エンジンは、結果として得られるツリーに基づいてショートカット有向パスを生成するようにアレンジされてもよい。いくつかの実施形態において、修正されたツリーは、ソースデータ型に対応するルートノードを含んでもよく、残りのリーフノードは、ターゲットデータ型に対応してもよい。したがって、いくつかの実施形態において、残りのノード及びエッジは、ソースデータ型からターゲットデータ型へのショートカット有向パスを含む。
【0170】
次に、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0171】
図13は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するプロセス1300のフローチャートを示す。開始ブロックの後、開始ブロック1302で、様々な実施形態のうちの1つ以上において、データモデル内のデータ型に対応する1つ以上のノードが、系統エンジンに提供されてもよい。
【0172】
様々な実施形態のうちの1つ以上において、系統エンジンは、ソースデータ型及びターゲットデータ型に関連付けられたクロージャに基づいて、1つ以上の候補ノードを提供するようにアレンジされてもよい。(
図12のプロセス1200のブロック1204を参照)。
【0173】
ブロック1304で、様々な実施形態のうちの1つ以上において、系統エンジンは、データフロー境界「ダウン」エッジを横断セットに追加するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、データフロー境界に含まれる情報を採用して、エッジ横断プールに含める1つ以上のエッジを決定するようにアレンジされてもよい。上述のように、データフロー境界宣言は、データフロー境界に関連付けられたエッジ定義を含む。
【0174】
したがって、様々な実施形態のうちの1つ以上において、系統エンジンは、候補ノード及びそれらの関連するエッジを評価して、1つ以上のフロー境界が存在し得るかどうかを判定するようにアレンジされてもよい。いくつかの実施形態において、フロー境界を区切る1つ以上のエッジは、データモデルに含まれるデータフロー境界定義内で宣言されてもよい。いくつかの実施形態において、決定されたフロー境界に含まれるエッジは、横断を必要とし得るセットエッジに追加されてもよい。例えば、フロー境界を横切り得るショートカットが定義され得る場合、ショートカットパスを検索する場合、フロー境界を構成するこれらの決定されたエッジが横断されてもよい。
【0175】
ブロック1306で、様々な実施形態の1つ以上において、系統エンジンは、データモデルを横断するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、候補ノードプール内のノードを訪問し、横断エッジプール内のエッジを横断するようにアレンジされてもよい。
【0176】
様々な実施形態のうちの1つ以上において、候補ノード及び横断エッジは、ノードがデータタイプに対応し、エッジが候補ノード間の関係に対応するツリー様グラフにアセンブルされてもよい。
【0177】
したがって、様々な実施形態のうちの1つ以上において、系統エンジンは、各エッジを横断するようにアレンジされてもよい。いくつかの状況では、以下に説明するように、1つ以上のエッジが横断セットに追加されてもよい。
【0178】
判定ブロック1308では、様々な実施形態のうちの1つ以上において、横断によって現在訪問されているノードが開始ノードから2つ以上の「ホップ」である場合、制御はブロック1310に流れ、そうでなければ、制御は判定ブロック1312に流れてもよい。いくつかの実施形態において、データモデルに含まれるショートカット宣言から決定されたソースデータ型で横断を開始するように、系統エンジンがアレンジされてもよい。したがって、いくつかの実施形態において、系統エンジンは、現在訪問されているノードが開始ノードからの距離を追跡するようにアレンジされてもよい。
【0179】
ブロック1310で、様々な実施形態のうちの1つ以上において、系統エンジンは、「ダウン」クロージャエッジをエッジトラバーサルセットに追加するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、データモデルに含まれる、又はデータモデルと共に含まれるクロージャ情報は、2つのエッジ(例えば、反対方向のエッジ)のうちのどちらを考慮すべきかを識別するために、定義されたクロージャのフロー方向インジケータを含む。したがって、様々な実施形態のうちの1つ以上において、訪問されたノードに関連付けられた「ダウン」クロージャに含まれるエッジが、横断集合に追加されてもよい。
【0180】
判定ブロック1312では、様々な実施形態のうちの1つ以上において、走査セット内の全てのエッジが横断された場合、制御はブロック1314にジャンプし、そうでなければ、制御はブロック1306にループバックしてもよい。いくつかの実施形態において、横断セット内のエッジが横断されたかどうかを追跡するように、系統エンジンがアレンジされてもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、横断されたエッジに関連付けられたノードを中間ツリー様グラフに追加するようにアレンジされてもよい。また、いくつかの実施形態において、系統エンジンは、横断されたエッジを中間ツリーに追加するようにアレンジされてもよい。
【0181】
ブロック1314では、様々な実施形態の1つ以上において、系統エンジンは、中間ツリーを提供するようにアレンジされてもよい。
【0182】
いくつかの実施形態において、データモデルに応じて、中間ツリーに重複するデータ型又は重複関係を含めるように、系統エンジンがアレンジされてもよい。中間ツリーは、ツリーグラフの正式な定義に適合しない可能性があるため、正式なツリーではなくツリー様グラフと考えられてもよい。
【0183】
様々な実施形態のうちの1つ以上において、系統エンジンは、要求されたショートカット有向パスを決定するために中間ツリーをプルーニング/クリーンにするために、上述のような追加の動作を実行するようにアレンジされてもよい。
【0184】
次いで、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0185】
図14は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスを生成するためのクロージャを生成するプロセス1400のフローチャートを示す。開始ブロックの後、ブロック1402で、様々な実施形態の1つ以上において、系統エンジンは、データモデルからのクロージャヒントを提供するようにアレンジされてもよい。上述のように、1つ以上のクロージャヒントが、データモデルに含まれるか、又はデータモデルに関連付けられてもよい。様々な実施形態のうちの1つ以上において、クロージャヒントは、系統エンジンがソースデータ型とターゲットデータ型を含むクロージャを生成すべきであることを宣言する。データモデルのトポグラフィーに応じて、追加のデータ型が含められてもよい。
【0186】
ブロック1404で、様々な実施形態のうちの1つ以上において、系統エンジンは、クロージャヒントからクロージャ方向を決定するようにアレンジされてもよい。いくつかの実施形態において、クロージャヒントは、クロージャがアップクロージャ又はダウンクロージャである場合にインジケータを含む。場合によっては、クロージャヒントが、アップクロージャとダウンクロージャの両方が、所与のソース/ターゲットのデータ型のペアについて生成されるべきであることを示してもよい。いくつかの実施形態において、ダウンクロージャでは、ターゲットデータ型に向かうパス上のソースデータ型から離れる方向に向けられたエッジは、ダウン方向におけるエッジと考えられてもよい。これに対して、ターゲットデータ型からソースデータ型に向かって遠ざかる方向にあるエッジは、アップ方向のエッジと考えられてもよい。
【0187】
ブロック1406で、様々な実施形態のうちの1つ以上において、系統エンジンは、データモデルと共に提供され得るクロージャヒントからソースデータ型を決定するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、特定のデータ型は、複数のクロージャに対するソースデータ型であってもよい。
【0188】
ブロック1408で、様々な実施形態のうちの1つ以上において、系統エンジンは、データモデルと共に提供され得るクロージャヒントからターゲットデータ型を決定するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、特定のデータ型は、複数のクロージャに対するターゲットデータ型であってもよい。
【0189】
ブロック1410で、様々な実施形態のうちの1つ以上において、系統エンジンは、クロージャソースデータ型からクロージャターゲットデータ型までデータモデルを横断するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、クロージャヒントは、ソースデータ型とターゲットデータ型とにリンクし得るデータモデル内のエッジを示す、少なくとも1つの名前付き関係を含んでもよい。
【0190】
ブロック1412で、様々な実施形態のうちの1つ以上において、系統エンジンは、クロージャヒントに対応するクロージャを生成するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、クロージャは、ソースデータ型及びターゲットデータ型の少なくとも2つのデータ型を含んでもよい。しかし、いくつかの実施形態において、ソースデータ型又はターゲットデータ型が追加のデータ型で構成され得る場合、それらのデータ型もクロージャに含まれてもよい。例えば、クロージャ700内のテーブルデータ型704が、テーブルデータ型の属性又は特徴を表す追加のデータ型を含んでいた場合、それらのデータ型は、クロージャに含まれてもよい。
【0191】
判定ブロック1414では、様々な実施形態のうちの1つ以上において、処理されるべきさらなるクロージャヒントがあり得る場合、制御はブロック1402にループバックしてもよく、そうでなければ、制御は呼び出しプロセスに戻ってもよい。
【0192】
様々な実施形態のうちの1つ以上において、データモデルは、1つ以上のクロージャヒントを含むように構成されてもよい。したがって、いくつかの実施形態において、各クロージャヒントを処理してデータモデルに対するクロージャを生成するように、系統エンジンがアレンジされてもよい。
【0193】
図15は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスに基づいてクエリを処理するプロセス1500のフローチャートを示す。開始ブロックの後、開始ブロック1502で、上述のように、様々な実施形態の1つ以上において、系統エンジンは、1つ以上のランタイムショートカットパスを生成するようにアレンジされてもよい。したがって、いくつかの実施形態において、データモデルに関連付けられたショートカット宣言から1つ以上のショートカット有向パスを生成するように、系統エンジンがアレンジされてもよい。
【0194】
いくつかの実施形態において、系統エンジンは、生成されたショートカットパスをキャッシュして、アクティブセッション中にそれらの再使用を可能にするようにアレンジされてもよい。いくつかの実施形態において、使用後にショートカット有向パスをキャッシュするか又は破棄すべきかどうかをクエリプロバイダが要求できるようにするAPIを提供するように、系統エンジンがアレンジされてもよい。いくつかの実施形態において、系統エンジンは、ショートカット又はクエリに関連付けられ得るタイムアウト値、優先度レベルなどに基づいて、ショートカット有向パスがキャッシュされるべきかどうかを決定するようにアレンジされてもよい。
【0195】
ブロック1504で、様々な実施形態の1つ以上において、系統エンジンは、1つ以上の持続ショートカットを決定するようにアレンジされてもよい。様々な実施形態のうちの1つ以上において、データモデルは、1つ以上のショートカットが持続ショートカットであり得ることを宣言してもよい。いくつかの実施形態において、初期化段階中に上述のように、持続ショートカットが生成され、後で使用するために記憶されてもよい。
【0196】
いくつかの実施形態において、1つ以上の持続ショートカットは、データ設計者によって手動で生成され、又はそうでなければ手動で調整されてもよい。したがって、いくつかの実施形態において、持続ショートカットは、最適なパス又は好ましいパスを表してもよい。いくつかの実施形態において、持続ショートカットは、データモデル内の他のエッジと同じ横断され得るエッジとしてデータモデルに含められてもよい。いくつかの実施形態において、持続ショートカットは、複数のホップを含むパスを置換し得る直接(1ホップ)関係を提供してもよい。
【0197】
判定ブロック1506では、様々な実施形態のうちの1つ以上において、1つ以上の関連する持続ショートカットがあり得る場合、制御はブロック1508に進んでもよく、そうでなければ、制御はブロック1510に進んでもよい。様々な実施形態のうちの1つ以上において、関連する持続ショートカットは、1つ以上のランタイムショートカットパスに含まれるデータ型と一致し得るデータオブジェクト又はデータ型に関連付けられ得るデータモデルの部分に関連し得る持続ショートカットを含んでもよい。
【0198】
いくつかの実施形態において、持続ショートカットがショートカットパス内のホップ数を減少させる場合、系統エンジンは、ショートカットパスを持続ショートカットで置換してもよい。様々な実施形態のうちの1つ以上において、系統エンジンは、最長の適格なランタイムショートカット又はランタイムショートカットパス部分を持続ショートカットで置換するようにアレンジされてもよい。したがって、場合によっては、複数のノード又はエッジを含むマルチホップパスは、持続ショートカットによって表される単一のエッジによって置換されてもよい。したがって、いくつかの実施形態において、クエリ解決のための計算性能又はメモリ消費は、クエリを解決するために横断され得るノード又はエッジの数を減少させることによって低減されてもよい。
【0199】
ブロック1508で、様々な実施形態の1つ以上において、系統エンジンは、1つ以上の持続ショートカットをショートカット有向パスへの代わりにするようにアレンジされてもよい。
【0200】
いくつかの実施形態において、系統エンジンは、ショートカットパスの部分を持続ショートカットパスで置換するようにアレンジされてもよい。例えば、いくつかの実施形態において、生成されたショートカット有向パスが、A->B->C->D->E(A-Eはデータ型)であり、持続ショートカットQがBのソースデータ型及びDのターゲットデータ型を有する場合、持続ショートカットQは、A->[Q]->Eのようにショートカットへの代わりにされてもよい。
【0201】
ブロック1510で、様々な実施形態の1つ以上において、系統エンジンは、後続のクエリを解決するためにショートカット有向パスを採用するようにアレンジされてもよい。次いで、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0202】
図16は、様々な実施形態のうちの1つ以上に従って、関連するデータ型間にショートカットパスに基づいてクエリを処理するプロセス1600のフローチャートを示す。開始ブロックの後、開始ブロック1602で、様々な実施形態の1つ以上において、クエリ情報を系統エンジンに提供してもよい。様々な実施形態の1つ以上において、系統エンジンによって提供又は管理されるデータモデルは、可視化プラットフォームなどの1つ以上の他のアプリケーションによって採用されてもよい。データモデルに含まれるデータオブジェクト及びデータ型は、ユーザインターフェース、可視化などに採用されてもよい。したがって、いくつかの実施形態において、そのようなアプリケーション又はサービスは、データオブジェクト又はデータモデルに関する他の情報を取り出すための1つ以上のクエリを提供してもよい。例えば、アプリケーションは、ユーザインターフェース又は可視化に表示される1つ以上のフィールドを提供するデータソースに関する情報を要求してもよい。また、いくつかの実施形態において、データ管理又はデータモデルのデータ管理をサポートするために、類似のクエリを可能にするユーザインターフェースを提供するように、系統エンジンがアレンジされてもよい。
【0203】
様々な実施形態のうちの1つ以上において、系統エンジンは、様々な言語又は表現で様々なクエリタイプを解析するようにアレンジされてもよい。いくつかの実施形態において、SQL様クエリ言語、グラフベースのクエリ言語、又はオブジェクトベースのクエリ言語などの様々な照会言語を使用して表現されるクエリをサポートするように、系統エンジンがアレンジされてもよい。いくつかの実施形態において、系統エンジンは、サポートされるクエリ言語を含む/拡張するために構成情報を介して提供される、解析、規則、文法などを採用するようにアレンジされてもよい。
【0204】
したがって、いくつかの実施形態において、権限を与えられたユーザ、アプリケーション、又はサービスが、特定のデータオブジェクト又はデータ型に関する情報を要求するクエリ情報を提供することを可能にする1つ以上のAPIを提供するように、系統エンジンがアレンジされてもよい。様々な実施形態のうちの1つ以上において、クエリ情報は、JSON、XML、テキスト、APIパラメータなど、又はそれらの組み合わせで提供されてもよい。
【0205】
ブロック1604で、様々な実施形態のうちの1つ以上において、系統エンジンは、データモデルに基づいて以前に生成された1つ以上のショートカット有向パスを決定するようにアレンジされてもよい。
【0206】
ブロック1606で、様々な実施形態の1つ以上において、系統エンジンは、クエリを解決するために1つ以上のショートカット有向パスを採用するようにアレンジされてもよい。いくつかの実施形態において、系統エンジンは、クエリ情報を解析して、それが、有向ショートカットパスのうちの1つ以上に関連付けられ得るデータオブジェクト又はデータ型を参照するかどうかを識別するようにアレンジされ得る。
【0207】
いくつかの実施形態において、データモデル内のデータ型に関連するクエリ応答を正しく決定するために、ショートカット有向パスを採用するように、系統エンジンがアレンジされてもよい。
【0208】
次に、様々な実施形態のうちの1つ以上において、制御は、呼び出しプロセスに戻されてもよい。
【0209】
各フローチャート図の各ブロック、及び各フローチャート図のブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されよう。これらのプログラム命令は、プロセッサ上で実行される命令が、各フローチャートブロック(複数可)において指定されたアクションを実装するための手段を作成するように、機械を製造するためにプロセッサに提供されてもよい。コンピュータプログラム命令は、プロセッサによって実行されて、一連の動作ステップがプロセッサによって実行されて、プロセッサ上で実行される命令が、各フローチャートブロック(複数可)において指定されたアクションを実装するためのステップを提供するように、コンピュータ実装プロセスを生成してもよい。コンピュータプログラム命令はまた、各フローチャートのブロックに示された動作ステップの少なくともいくつかが並列に実行されるようにしてもよい。さらに、ステップのいくつかはまた、マルチプロセッサコンピュータシステムで発生するような、複数のプロセッサにわたって実行されてもよい。追加的に、各フローチャート図における1つ以上のブロック又はブロックの組み合わせは、他のブロック又はブロックの組み合わせと同時に、又は本発明の範囲又は精神から逸脱することなく、図示されたものとは異なる順序で実行されてもよい。
【0210】
したがって、各フローチャート図における各ブロックは、指定されたアクションを実行するための手段の組み合わせ、指定されたアクションを実行するためのステップの組み合わせ、及び指定されたアクションを実行するためのプログラム命令手段をサポートする。また、各フローチャート図の各ブロック、及び各フローチャート図のブロックの組み合わせは、特定のアクション若しくはステップ、又は特殊目的のハードウェア及びコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムによって実装され得ると理解されるだろう。前述の例は、限定的又は網羅的であると解釈されるべきではなく、むしろ、本発明の様々な実施形態のうちの少なくとも1つの実装を示すための例示的な使用ケースである。
【0211】
さらに、1つ以上の実施形態(図には示されていない)では、例示的なフローチャート内の論理は、CPUの代わりに、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、PAL(Programmable Array Logic)など、又はそれらの組み合わせなどの、埋め込み論理ハードウェアデバイスを使用して実行されてもよい。埋め込み論理ハードウェアデバイスは、その埋め込み論理を直接実行して、アクションを実行してもよい。1つ以上の実施形態では、SOC(System On a Chip)などのマイクロコントローラは、自身の埋め込み論理を直接実行して、アクションを実行し、自身の内部メモリ及び自身の外部入出力インターフェース(例えば、ハードウェアピン又は無線トランシーバ)にアクセスして、アクションを実行するようにアレンジされてもよい。
【国際調査報告】