JP2006228200A - リレーションシップモデリング - Google Patents

リレーションシップモデリング Download PDF

Info

Publication number
JP2006228200A
JP2006228200A JP2006007830A JP2006007830A JP2006228200A JP 2006228200 A JP2006228200 A JP 2006228200A JP 2006007830 A JP2006007830 A JP 2006007830A JP 2006007830 A JP2006007830 A JP 2006007830A JP 2006228200 A JP2006228200 A JP 2006228200A
Authority
JP
Japan
Prior art keywords
relationship
computer
class
item
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006007830A
Other languages
English (en)
Other versions
JP5592591B2 (ja
Inventor
Benjamin Albahari
アルバハリ ベンジャミン
Henricus Johannes Maria Meijer
ヨハネス マリア メイヤー ヘンリクス
Michael E Deem
イー.ディーム マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006228200A publication Critical patent/JP2006228200A/ja
Application granted granted Critical
Publication of JP5592591B2 publication Critical patent/JP5592591B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01MPROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMICAL ENERGY INTO ELECTRICAL ENERGY
    • H01M12/00Hybrid cells; Manufacture thereof
    • H01M12/04Hybrid cells; Manufacture thereof composed of a half-cell of the fuel-cell type and of a half-cell of the primary-cell type
    • H01M12/06Hybrid cells; Manufacture thereof composed of a half-cell of the fuel-cell type and of a half-cell of the primary-cell type with one metallic and one gaseous electrode
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01MPROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMICAL ENERGY INTO ELECTRICAL ENERGY
    • H01M10/00Secondary cells; Manufacture thereof
    • H01M10/04Construction or manufacture in general
    • H01M10/0422Cells or battery with cylindrical casing
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01MPROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMICAL ENERGY INTO ELECTRICAL ENERGY
    • H01M4/00Electrodes
    • H01M4/02Electrodes composed of, or comprising, active material
    • H01M2004/023Gel electrode
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01MPROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMICAL ENERGY INTO ELECTRICAL ENERGY
    • H01M4/00Electrodes
    • H01M4/02Electrodes composed of, or comprising, active material
    • H01M4/06Electrodes for primary cells
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01MPROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMICAL ENERGY INTO ELECTRICAL ENERGY
    • H01M50/00Constructional details or processes of manufacture of the non-active parts of electrochemical cells other than fuel cells, e.g. hybrid cells
    • H01M50/10Primary casings, jackets or wrappings of a single cell or a single battery
    • H01M50/102Primary casings, jackets or wrappings of a single cell or a single battery characterised by their shape or physical structure
    • H01M50/107Primary casings, jackets or wrappings of a single cell or a single battery characterised by their shape or physical structure having curved cross-section, e.g. round or elliptic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E60/00Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
    • Y02E60/10Energy storage using batteries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/975Portable database architecture

Abstract

【課題】複数のアイテムの間のリレーションシップを、アイテム自体の外部で定義することにより、モジュラーで柔軟性のある拡張可能なシステムを提供する。
【解決手段】課題の開示は、複数のアイテムの間のリレーションシップに関係する。例えば、複数のアイテムの間のリレーションシップを、指定されたリレーションシップによる特定のエレメントまたは値を戻すためのメソッドを含む、クラス内で定義することができる。また、コンパイラまたは類似のシステムを、単純なプロパティフォーマット内のリレーションシップ表現を受け入れ、このようなコールを特定のメソッドにダイレクトするように、拡張することができる。
【選択図】図1

Description

本発明は、一般には、オブジェクト指向プログラミングに関し、より詳細には、オブジェクト指向のリレーションシップモデリングに関する。
プログラミング言語は、タスク実行のためにコンピュータまたはマイクロプロセッサへ命令を通信するのに特に使用される形式言語である。長年の間、オブジェクト指向プログラミングは、設計者およびプログラマがコンピュータシステム内で機能を実装するために利用する、多数の見慣れた、よく知られているモデルの1つになっている。オブジェクト指向プログラミングはユニークであり、これは少なくとも、他のモデルのようにアクションではなく、オブジェクトや物に関してプログラミングを考慮することを前提としているからである。
オブジェクト技術の利点は、3つの基本的原理、すなわち、カプセル化、ポリモルフィズムおよび継承のうち1つから生じる。オブジェクトはそれらのデータおよび関連付けられたメソッドの内部構造を隠す、またはカプセル化する。実装詳細を公開するのではなく、オブジェクトはそれらの抽象化を、無関係な情報なしに明示的に表現するインターフェイスを提示する。ポリモルフィズムは、カプセル化をさらにもう一歩進ませる。ポリモルフィズムは、異なるデータ型に対する同じコードの使用を可能にし、この考えは、多数の形状、1つのインターフェイスである。よって、ソフトウェアコンポーネントは別のコンポーネントの要求を、そのコンポーネントが厳密に何であるかを知ることなく、作成することができる。要求を受信するコンポーネントは要求を解釈し、その変数およびデータに従って、要求を実行するための方法を解明する。第3の原理は継承であり、開発者が前から存在する設計およびコードを再使用することができるようにする。この能力で、開発者がすべてのソフトウェアを最初から作成することを回避することが可能となる。むしろ、継承を通じて、開発者は、他のクラスの状態およびビヘイビアを継承および修正するサブクラスを派生させることができる。
オブジェクト指向プログラミングモデルは、クラスベースの手法を介して定義されることが多い。このシステムでは、オブジェクトは、状態およびビヘイビアを含むエンティティである。オブジェクトの状態およびビヘイビアはクラスによって定義され、クラスは特定の型のオブジェクトを識別する。クラス定義に基づいて作成されたオブジェクトは、動的な型において反映されたそのクラスのインスタンスと見なされる。したがって、クラスは、オブジェクトが含むことができるデータ(すなわち、状態)、ならびに、オブジェクトが実行することができるメソッド、関数またはビヘイビアを指定する。メソッドは、関連付けられたオブジェクトの内部状態を、その中に含まれたデータを変更することによって、修正するように動作する。オブジェクト内のこのようなデータおよびメソッドの組み合わせはしばしば、オブジェクト指向プログラミングにおいてカプセル化と呼ばれる。カプセル化は、オブジェクトの状態が、オブジェクトに関連付けられた明確なメソッドによってのみ変更されることに備える。オブジェクトのビヘイビアが、このように明確なロケーションおよびインターフェイスに限定されるとき、オブジェクト内の変化(例えば、コード修正)は、システム内の他のオブジェクトおよびエレメントに最小限の影響を与えるようになる。
以下で、主張された内容のいくつかの態様の基本的理解を提供するために、簡単な要約を提示する。要約は、広範な概観ではない。主張された内容の重要/重大な要素を識別するように、または、主張された内容の範囲を線引きすることを意図しない。唯一の目的は、いくつかの概念を簡単な形態で、以下で提示するより詳細な説明の前置きとして提示することである。
簡潔に説明される課題の開示は、アイテムおよび/またはそのエレメントの間のリレーションシップの表現に関係する。
具体的には、リレーションシップは第1のクラス概念として扱われる。課題の開示の一態様にかかるリレーションシップを、クラスなど、リレーションシップを計算するおよび/またはナビゲートするメカニズムまたはメソッドを提供するアイテムの外部のコンストラクト(construct)によって表現することができる。課題の革新の別の態様によれば、リレーションシップメソッドを、データ型プロパティ表記を利用して呼び出すことができる。
課題の革新の態様は、少なくとも、これらの態様が、複数のアイテムの間のリレーションシップと対話するための、拡張可能および使いやすいシステムおよび方法を提供することにおいて有利である。リレーションシップを第1のクラスプログラミングオブジェクトにすることによって、新しいリレーションシップを既存のアイテムの間で、アイテムを修正することなく、作成することができる。これは少なくとも価値がある。なぜならば、プログラマのコントロール下にない、またはエレメントを修正して新しいリレーションシップを反映することが実行不可能な場合の、一部または全部のアイテムまたはエレメントの間のリレーションシップの定義を可能にするからである。なおさらに、クラスメソッドの呼び出しを、プロパティ表現を介して容易に実施し、および実際のメソッド表記にマップさせることができる。
前述および関連の目的の達成に向かって、主張された内容のある例示的態様を、以下の説明および添付の図面に関連して本明細書で説明する。これらの態様は、内容を実施することができる様々な方法を示し、そのすべてが主張された内容の範囲内になるように意図される。他の利点および新規の特徴は、図面と共に考慮されるとき、以下の詳細な説明から明らかになるであろう。
課題の革新の様々な態様をこのとき添付の図面を参照して説明し、図面において、類似の番号は全体に渡って類似または対応するエレメントを指す。しかし、これに関係する図面および詳細な説明は、主張された内容を、開示された特定の形態に限定するように意図されないことを理解されたい。むしろ、意図することは、主張された内容の精神および範囲内に入るすべての修正、等価物、および代替物を包含することである。
本出願で使用されるとき、「コンポーネント」および「システム」などの語はコンピュータ関連エンティティを指すように意図され、このエンティティは、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれでもよい。例えば、コンポーネントは、限定されないが、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、インスタンス、実行可能なファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例示として、コンピュータ上で実行するアプリケーションおよびコンピュータの両方がコンポーネントである可能性がある。1つまたは複数のコンポーネントはプロセスおよび/または実行のスレッド内に存在することができ、コンポーネントは1つのコンピュータ上でローカライズされるか、および/または2つ以上のコンピュータの間で分散される場合がある。
「例示的」という語は本明細書で、例、場合または例示としての機能を果たすことを意味するために使用される。本明細書で「例示的」として説明されたいかなる態様または設計も、必ずしも他の態様または設計よりも好ましいまたは有利と解釈されるとは限らない。さらに、様々な例示的コードスニペットが本明細書で提供される。これらの実施例は、明瞭にするため、および理解のために提供され、開示された内容の範囲を、主張された内容の様々な態様の説明において使用されたその言語、アーキテクチャおよび/または特徴に限定するように意味されないことを理解されたい。
人工知能ベースのシステム(例えば、明示的および/または暗示的にトレーニングされた分類子、ナレッジベースシステム...)を、後述の課題の革新の1つまたは複数の態様によって、推論および/または確率的決定および/または統計ベースの決定を実行することに関連して使用することができる。本明細書で使用されるとき、「推論」という語は一般に、イベントおよび/またはデータを介してキャプチャされたような観察のセットから、システム、環境および/またはユーザーの状態について判断または推論するプロセスを指す。推論を使用して、特定のコンテキストまたはアクションを識別することができ、または例えば、推論は複数の状態に渡る確率分布を生成することができる。推論は確率的である可能性があり、すなわち、データおよびイベントの考慮に基づいた、関心のある複数の状態に渡る確率分布の計算である可能性がある。推論はまた、イベントおよび/またはデータのセットからより高いレベルのイベントを構成するために使用される技術を指す可能性もある。このような推論は結果として、イベントが時間的に密接に近接して相関されるかどうかにかかわらず、ならびに、イベントおよびデータが1つのイベントおよびデータソースから来るか、複数のイベントおよびデータソースから来るかにかかわらず、観察されたイベントおよび/または格納されたイベントデータのセットからの、新しいイベントまたはアクションの構築となる。様々な分類スキームおよび/またはシステム(例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク、ファジー理論、データフュージョンエンジン...)を、課題の発明に関連した自動および/または推論されたアクションを実行することに関連して使用することができる。
加えて、開示された内容を、標準のプログラミングおよび/またはエンジニアリング技術を使用して、ソフトウェア、ファームウェア、ハードウェアまたはそれらのいかなる組み合わせをも生成する、システム、方法、装置または製造品として実施して、コンピュータまたはプロセッサベースの装置をコントロールして、本明細書で詳述した態様を実施することができる。本明細書で使用されるとき、「製造品」(または、代替として「コンピュータプログラム製品」)という語は、いかなるコンピュータ読取可能な装置、搬送波または媒体からもアクセス可能なコンピュータプログラムを包含するように意図される。例えば、コンピュータ読取可能な媒体は、限定されないが、磁気ストレージデバイス(例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ...)、光ディスク(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)...)、スマートカード、およびフラッシュメモリデバイス(例えば、カード、スティック、ジャンプドライブ...)を含むことができる。加えて、搬送波を、電子メールの送信および受信において、または、インターネットもしくはローカルエリアネットワーク(LAN)など、ネットワークへのアクセスにおいて使用されるものなど、コンピュータ読取可能な電子データを搬送するために使用することができることを理解されたい。言うまでもなく、主張された内容の範囲または精神から逸脱することなく多数の修正をこの構成に行うことができることは、当業者には理解されよう。
最初に図1を参照すると、本開示の一態様によるリレーションシップシステム100が示される。リレーションシップシステム100は、アイテムレシーバコンポーネント110およびリレーションシップ生成コンポーネント120を含むことができる。アイテムレシーバコンポーネント110は、アイテムおよび/またはそのエレメントを受信、検索、またはそうでない場合は取得する。アイテムは、限定されないが、データ型、オブジェクト、ウェブページ、およびXMLドキュメントを含むことができる。リレーションシップ生成コンポーネント120は、複数のアイテムをアイテムレシーバコンポーネント110から受信、検索、またはそうでない場合は獲得する。リレーションシップ生成コンポーネント120はこれらのアイテムを解析し、アイテムの間のリレーションシップを指定および/または定義する。例えば、リレーションシップを、クラス、またはより具体的には静的クラスなど、プログラムコンストラクト内で定義することができる。クラスは、特定のリレーションシップに従ってアイテムまたはそのエレメントの様々なセットを検索するための機能性をカプセル化する、メソッドまたはメソッドへの参照を、クラスの外側で含むことができる。
リレーションシップシステム100は、複数の意味で有益であることに留意されたい。例えば、システム100は、開発において、このようなアイテム、および、これらのアイテムの間のリレーションシップまたはリンク、ならびに、モジュール性の概念の分離をサポートする。なおさらに、アイテムおよびリレーションシップの分離は柔軟性および拡張可能性を提供し、これは、これらのアイテムが常に変更のために使用可能であるとは限らない場合があり、または、これらのアイテムを修正することが実用的ではない場合があるからである。例えば、数十年前にあるレガシーフォーマットにおいて定義された、人、および、各人についてのデータまたはプロパティのコレクションがある状況を考察されたい。続いて、そのコレクションを修正して、各人に対して携帯電話番号を追加することは、可能または実現可能ではない場合がある。このとき、別のリレーションシップコンストラクトを生成して、人コレクションおよび別の携帯電話コレクションを関連付けることができる。
図2は、例示的リレーションシップ対話システム200を例示する。システム200は、課題の革新の態様の説明および考察を容易にするために提供される。システム200は、1つまたは複数のリレーションシップメソッド210、ならびに、2つのアイテムA220およびB230を含む。グラフィカルに示すように、アイテムA220とアイテムB230の間のリレーションシップは、これらのアイテムのプロパティ内で、またはプロパティとして定義されない。むしろ、リレーションシップは、これらのアイテムの外部で、第1のクラス概念として定義される。リレーションシップメソッド210は、アイテムおよびアイテムエレメントと対話するために、計算をカプセル化する。
例として、限定ではなく、リレーショナルマッピングシナリオへのオブジェクトを考察する。具体的には、この状況は、オブジェクトを有するデータベースリレーションに対してプログラムすることが望ましい状況である。概念上、型Tのオブジェクトを含むデータベーステーブルをプログラミング言語において、C#におけるIEnumerable<T>など、コレクション型により表現することができ、ただしTは、テーブルのフィールドにマップするプロパティを有するクラスである。データベースリレーションシップを次いで、プログラミング言語において静的クラスにより表現することができる。そのクラスは、結合条件をカプセル化することによって、これらのリレーションシップをナビゲートする静的メソッドを提供する。例えば、アイテムA220を、顧客テーブルに対応するオブジェクト、型、またはクラスにすることができ、アイテムB230を、注文テーブルに対応するオブジェクト、型、またはクラスにすることができる。例えば、以下の通りである。
Figure 2006228200
リレーションシップ210を、アイテムA220およびB230から分離して、以下のように、静的クラスなど、プログラムコンストラクトにおいて定義することができる。
Figure 2006228200
ここで、クラスメソッドは、データストアを、顧客と注文との間に存在する可能性のある複数のリレーションシップに従ってナビゲートするためのメカニズムを提供する。ここで、2項(binary)のリレーションシップは、クラスおよびクラスメソッドによってカプセル化される。2項のリレーションシップには、1対1、1対多数、多数対1、および多数対多数リレーションが含まれる可能性がある。第1のメソッド「GetCustomerGivenOrder」は、特定の注文が与えられると顧客が検索される1対1リレーションシップを取り込む。第2のメソッド「GetOrdersGivenCustomer」は、多数対1リレーションシップである。ここで、特定の顧客に関連付けられた複数の注文が検索される。第3のメソッドおよび第4のメソッド「GetCustomersGivenOrders」および「GetOrdersGivenCustomers」は、多数対多数である。具体的には、第1のメソッドは、指定された注文に関連付けられた顧客のコレクションを検索する。注文のセットが与えられると、第4のメソッドは、関係付けられた顧客を検索することができる。
前述および後続の実施例は、付属の特許請求の範囲の範囲を限定するように意味されない。この開示の態様は、複数のアイテムの間にリレーションシップまたはナビゲーションがあるいかなる状況にも適用可能である。例えば、リンクされたドキュメントシナリオを考察されたい。アイテムA220およびアイテムB230は、限定されないが、ハイパーテキストおよびXMLを含む、様々なフォーマットのいずれか1つにおける電子ドキュメントとすることができる。アイテムA220からアイテムB230へのハイパーリンクなど、リンクを含むのではない。これらのドキュメントの間のリレーションシップ210を、その外部で定義することができる。これにより、ドキュメントの1つの修正を必要とすることなく、リレーションシップが定義されることが可能となる。
2項およびリンクの他に、他のリレーションシップもまた企図され、付属の特許請求の範囲の範囲内であり、リレーションシップは、限定されないが、コンポジションおよび関連付けを含む。アイテムは、他のアイテム内でネストされる場合、別のアイテムとのコンポジションリレーションシップを有する。したがって、アイテムまたはエンティティは、他のいかなるアイテムまたはエンティティを構成することもできる。以下のテーブルは、メッセージ参加者コンポジションリレーションシップを例示する。
Figure 2006228200
関連付けにより、参照、共通値、条件およびエンティティを含む、いくつかの異なる型がある。参照関連付けは、主キー外部キーリレーションシップに対応する可能性がある。以下の例は、顧客−注文参照関連付けリレーションシップを示し、ただし、テーブル2は顧客に対応し、テーブル3は注文に対応する。
Figure 2006228200
Figure 2006228200
共通値関連付けは、共通値が2つ以上のアイテムに渡って共有されるリレーションシップである。例えば、以下のテーブルは、音楽家共通値関連付けが人(テーブル4)と器具(テーブル5)の間で示されることを例示する。
Figure 2006228200
Figure 2006228200
条件関連付けは、クエリ基準によって表現されたリレーションシップである。後続の例は、連絡先ドキュメント条件関連付けを提供する。
Figure 2006228200
Figure 2006228200
エンティティ関連付けは、他の型のリレーションを介して他のエンティティへのハブの機能を果たす、n個のエンドポイントをアイテムまたはエンティティの周囲で有する。リンクリレーションを単に、1つのハブおよび2つの参照ベースのエンドポイントを有する、エンティティ関連付けの特殊な場合にすることができる。以下の例示的テーブルは雇用エンティティ関連付けを示し、ただし、テーブル8は雇用に対応し、テーブル9は人に対応し、テーブル10は雇用者に対応する。
Figure 2006228200
Figure 2006228200
Figure 2006228200
図3は、課題の発明の一態様によるリレーションシップシステム300を例示する。図1のシステム100と同様に、システム300は、アイテムレシーバコンポーネント110およびリレーションシップ生成コンポーネント120を含む。上述のように、レシーバコンポーネント110は、2、3だが例を挙げると、データオブジェクト、ウェブページ、またはXMLドキュメントなど、複数のエレメントを受信および/または検索することができる。リレーションシップ生成コンポーネント120は、エレメントをレシーバコンポーネント110から受信および/または検索することができる。リレーションシップ生成コンポーネント120は、これらのアイテムの間のリレーションシップまたはリンクを定義または指定することができる。さらに、生成コンポーネント120は、指定されたリレーションシップに応答して特定のアイテムまたはそのエレメントを検索するための、メソッドまたはその参照を提供することができる。再びシステム100と同様に、システム300はリレーションシップをクラス内で定義することができ、クラスは、リレーションシップを計算するためのメソッドを含むことができる。しかし、システム300はまた、影響コンポーネント310を含むこともできる。影響コンポーネント310は、リレーションシップの名前付けに影響を及ぼすためのメカニズムである。課題の革新の一態様によれば、影響コンポーネント310は、関係付けられたエレメントの名前に基づいてリレーションシップ名を推論または推定するためのヒューリスティックまたは人工知能コンポーネント、メソッドまたはメカニズムを含むことができ、またはこれらに通信的に結合されることが可能である。例えば、2つのアイテム「顧客」および「注文」は、上の例のように、「GetCustomerGivenOrder」という名前のリレーションシップメソッドを有することができる。加えて、または代替として、影響コンポーネント310は、例えば、外部メタデータ情報によって駆動された名前付けスキームを受信および/または提供することによって、リレーションシップ生成コンポーネント120を支援することができる。
前述のように、リレーションシップを、数ある中でも、2項のリレーションシップまたは汎用のn項(n−ary)のリレーションシップ(例えば、ハブ−スポークリレーションシップ)にすることができる。2項のリレーションシップを、エンティティリレーションシップの話で利用されたように、1対1、1対多数、多数対1、または多数対多数リレーションシップにすることができる。型SおよびTの間のリレーションシップを、静的クラスによりモデリングすることができる。以下の2項のいくつかのリレーションシップを取り込むクラスの例を考察されたい。
Figure 2006228200
1対1リレーションシップの場合、GetTsGivenSメソッドはTの単一のインスタンスを戻し、多数対多数リレーションシップの場合、GetSGivenTメソッドは、IEnumerableなど、コレクション型を戻す。
リレーションシップクラス、静的メソッド、および引数名の名前を、限定されないが、ヒューリスティックスを型名に基づいて利用すること、および、外部メタデータ情報によって駆動された名前付けスキームを使用することを含む、様々な方法で派生させることが可能である。また、以前に提供したように、以下は「顧客」と「注文」の間のリレーションシップをモデリングする。
Figure 2006228200
以下など、顧客テーブル内で顧客のセットを表現する変数が与えられる。
Figure 2006228200
以下の静的メソッドを利用して、以下のようにその顧客のセットに関係付けられた注文のセットを検索することができる。
Figure 2006228200
この静的メソッドコールは、結合条件をカプセル化する。
Figure 2006228200
n項のリレーションシップ(本明細書で、エンティティ関連付けとも称する)は、例えば特定の型の、または他の型を有する、2項のリレーションシップのセットである。一例は、ハブおよびスポークリレーションシップである。このようなリレーションシップのための設計パターンは以下の通りである。
Figure 2006228200
技術的に、リレーションシップの様々な面におけるカーディナリティを区別することができるが、簡単にするために、ハブとスポークの間のすべての個々の2項のリレーションシップは1対多数であると仮定する。
単純な2項のリレーションシップの場合のように、リレーションシップクラスおよび静的メソッドの名前を、型名に基づいたヒューリスティックスから、外部メタデータ情報によって駆動された名前付けスキームまでに及ぶ、様々な方法で派生させることができる。以下の実施例は、「雇用」、「人」および「組織」の間のリレーションシップをモデリングする。「雇用」と「人」、および、「雇用」と「組織」の間の、2つの1対多数の2項のリレーションシップがある。「雇用」はハブの機能を果たす。
Figure 2006228200
以下など、人テーブル内で人のセットを表現する変数が与えられる。
Figure 2006228200
以下の静的メソッドは、その人のセットに関係付けられた雇用のセットを取得するために使用される。
Figure 2006228200
以下の静的メソッドは、その雇用のセットに関係付けられた組織のセットを取得するために使用される。
Figure 2006228200
後者の静的メソッドコールは、結合条件をカプセル化する。
Figure 2006228200
型またはクラスリレーションシップを、型プロパティとのリレーションシップとしてモデリングすることができる。例えば、人という型および組織という型を含むシナリオであって、組織は人を雇用し、人は組織によって雇用されるシナリオを考察されたい。これは、C#など、オブジェクト指向言語において以下のように表現される。
Figure 2006228200
しかし、別々のクラスによるモデリングには、プロパティによるリレーションシップのモデリングに勝る利点がある。例えば、新しいリレーションシップを、複数の既存の型の間で、これらの型を修正することなく、作成することができる。プロパティを使用する上記のシナリオでは、「人」および「組織」型は、「雇用」型における依存を有する。さらに、プロパティによるリレーションシップのモデリングは、インスタンスからのナビゲーションのみを可能にするが、静的クラスからのリレーションシップのモデリングは、インスタンスのコレクションからのナビゲーションを可能にする。
静的メソッドを使用してリレーションシップを第1のクラス概念として表現する設計パターンは、プログラマに多大な表現力を与えるが、構文的には冗長である。また、これらのリレーションシップは異なるように見え、プロパティとしてモデリングされたリレーションシップよりも発見可能ではない。
図4は、課題の革新の一態様による、リレーションシップにアクセスする方法を構文的に単一化するコンパイルシステム400を例示する。システム400は、表現レシーバコンポーネント410、コード生成コンポーネント420、およびメタデータコンポーネント430を含む。レシーバコンポーネント410は、限定されないが、データ型を含む、複数のアイテムの間のリレーションシップを含む、プログラム表現を受信する。このプログラム表現を、リレーションシップがプロパティであるかのように指定される、簡略化された表現にすることができる。例えば、顧客テーブル内で顧客のセットを表現する変数、すなわち「IEnumerable<Customer> customers=...;」が与えられると、以下の構文を使用して、その顧客のセットに関係付けられた注文のセットを取得することができ、すなわち「IEnumerable<Order> orders=customer.Orders」である。コード生成コンポーネントはこの表現を受信し、この表現から、より冗長なコード、または、「OrderRelationship.GetOrderGivenCustomers(customers)」など、メソッドへのコールを生成する。この機能性は、コード生成コンポーネント420によってメタデータコンポーネント430を介して可能にされる。メタデータコンポーネント430は、クラスに関するメタデータを検索または受信し、このメタデータをコード生成コンポーネント420に提供して、簡素化された表現から実際の、またはより冗長な表現へのマッピングを可能にすることができる。このメタデータは、「OrderRelationship.GetOrderGivenCustomers(customers)」が「customer.Order」にマップすると指定することができる。課題の革新の一態様によれば、このようなメタデータを、複数のエレメントの間のリレーションシップを定義するクラスにおいて提供することができる。代替として、このメタデータを、コンパイルシステムおよび/またはコード生成コンポーネント420によって利用される、ある外部ファイルまたはスキーマによって提供することができる。
図5を参照すると、データ対話を容易にするためのインターフェイスシステム500が例示される。インターフェイスシステム500は、通信的に結合されたナビゲーションインターフェイスコンポーネント510およびデータインターフェイスコンポーネント520を含む。例として、データインターフェイスコンポーネント520は、ナビゲーションインターフェイスコンポーネント510によってコールまたは実行することができるメソッドを実装することができ、逆もまた同様である。ナビゲーションインターフェイスコンポーネント510は、リレーションシップ表現を受信することができる。インターフェイスコンポーネント510は、それぞれ「customer.Orders」または「OrderRelationship.GetOrderGivenCustomers(customers)」など、省略された、または、完全な長さの表現のいずれかを受信することができる。省略形が提供される場合、ナビゲーションインターフェイスコンポーネント510はこの表現を完全な長さの表現に変換することができる。この表現を次いで、ナビゲーションインターフェイスコンポーネント510からデータインターフェイスコンポーネント520に送信することができる。データインターフェイスコンポーネント520は、1つまたは複数のアイテムにおける実行のためにこの表現を提供することができる。データが検索される場合、データインターフェイスコンポーネント520は結果を、ナビゲーションインターフェイスコンポーネント510に戻すように送信することができる。したがって、ナビゲーションインターフェイスコンポーネント510およびデータインターフェイスコンポーネント520は、アプリケーションプログラムインターフェイス(API)に対応する可能性がある。
図6は、課題の開示の一態様による統合された開発環境またはシステム600を示す。システム600は、エディタコンポーネント610およびプログラム支援コンポーネント620を含むことができる。エディタコンポーネント610は、コンピュータソースコードの編集および/または開発のために専門化されたテキストエディタである。具体的には、エディタコンポーネント610はリレーションシップの指定を受信することができる。テキストエディタは、プログラム支援コンポーネント620に通信的に結合される。支援コンポーネント620は、数ある中でも、ヒンティング、フォーマッティング、カラー化、ツールチップ、および、エラー指示または警告を含む、コーディング支援を提供することができる。例えば、ドットなど、アイテムおよびトリガを受信することに応答して、プログラム支援コンポーネント620は、テキストエディタコンポーネント610を提供すること、および/または、テキストエディタコンポーネント610にステートメート完成のための提案を表示させることができる。提案を、本明細書で提供されるようなリレーションシップに関して行うことができる。例えば、「customer.」を受信すると、「customer」についてのすべての注文が検索されることを示す、完全なステートメント「customer.Orders」のために、「Orders」を提案することができる。したがって、アイテムのプロパティとして現れるが、別々のリレーションシップ方法に対応する、ヒントまたは提案を行うことができる。
前述のシステムは、いくつかのコンポーネントの間の対話に関して説明された。このようなシステムおよびコンポーネントには、これらのコンポーネントまたはその中で指定されたサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントのいくつか、および/または追加のコンポーネントが含まれる可能性があることを理解されたい。サブコンポーネントをまた、親コンポーネント内に含まれるのではなく、他のコンポーネントに通信的に結合されたコンポーネントとして実装することもできる。さらに、1つまたは複数のコンポーネントおよび/またはサブコンポーネントを単一のコンポーネントに結合して、集約機能性を提供することができる。これらのコンポーネントはまた、簡潔にするために本明細書で特に説明されないが、当業者には知られた、1つまたは複数の他のコンポーネントと対話することもできる。
さらに、理解されるように、開示された上記のシステムおよび以下の方法の様々な部分は、人工知能またはナレッジまたはルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法またはメカニズム(例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク、ファジー理論、データフュージョンエンジン、分類子...)を含み、またはこれらからなる場合がある。このようなコンポーネントはとりわけ、それによってこれらのシステムおよび方法の部分をより適応的、ならびに効率的およびインテリジェントにするために実行された、あるメカニズムまたはプロセスを自動化することができる。例として、限定ではなく、影響コンポーネント310はこのような方法またはメカニズムを使用して、生成されたリレーションシップ名を推論し、これらに影響を及ぼすことができる。
上述の例示的システムに鑑みて、開示された内容によって実施することができる方法は、図7〜10のフローチャートを参照してよりよく理解されるであろう。説明を簡単にするため、これらの方法を一連のブロックとして図示および説明するが、主張された内容はこれらのブロックの順序によって限定されず、これは、いくつかのブロックが異なる順序で、および/または、本明細書で図示および説明されるものとは別のブロックと同時に発生する場合があるからであることを理解されたい。また、すべての例示されたブロックが、以下に説明する方法を実施するために必要とされるとは限らない場合がある。
加えて、以下で、および、本明細書を通じて開示される方法は、このような方法をコンピュータにトランスポートおよび転送することを容易にするために製造品上に格納されることが可能であることを、さらに理解されたい。製造品という語は、本明細書で使用されるとき、いかなるコンピュータ読取可能な装置、搬送波または媒体からもアクセス可能なコンピュータプログラムをも包含するように意図される。
図7を参照すると、リレーションシップを定義する方法700が示される。710では、アイテムが受信される。これらは、限定されないが、データ型およびドキュメント(例えば、XML、ワードプロセッシング、HTTP...)など、プログラムアイテムを含むことができる。720では、複数のアイテムの間のリレーションシップを定義する、クラスなど、コンストラクトが生成される。例えば、クラスを、オブジェクト指向の静的クラスにすることができる。さらに、クラスは、アイテムまたはエレメントリレーションシップの計算および/またはナビゲートをカプセル化する、静的メソッドを含むことができる。数ある中でも、リレーションシップを2項またはn項にすることができる。加えて、リレーションシップまたはメソッドの名前に、関係付けられるべきアイテムに関連付けられた名前または他のメタデータによって影響を及ぼすことができる。クラスを自動的に生成することができるが、例えば、データ型など、無数のエレメントを識別すること、および、IDE(統合開発環境)または類似のシステムの助けの有無に関わらず、オブジェクト指向プログラミング言語において複数の要素の間のリレーションシップを定義するクラスを手動で指定することによって、方法400をまた手動で実施することもできることを理解されたい。
図8は、本開示の一態様によるコンパイル方法800を示す。810では、リレーションシップ表現が受信される。リレーションシップ表現を、「customer.Orders」など、クラスのプロパティとして表現することができる。820では、コンパイラまたは他のシステムはこの表現を受信し、例えば、複数のアイテムの間のリレーションシップを指定する、クラス内で定義されたメソッドに関連付けられたコードを生成、またはそのコードに拡張することができる。このようなコード生成を容易にするために、コンパイラは、例えば、リレーションシップクラスに関連付けられたメタデータを利用して、表現とより冗長なメソッド呼び出しの間のマッピングを決定することができる。したがって、コンパイラは、静的メソッドの呼び出しを、型など、アイテム上で直接定義されたプロパティとして現れるようにする。
図9を参照すると、データと対話するための方法900が例示される。参照符号910では、リレーションシップ表現が受信される。リレーションシップ表現は、2つ以上のアイテムまたはエレメント、および、複数のアイテムの間のリレーションシップを識別する。本開示の一態様によれば、この表現をプロパティフォーマット内で指定して、例えば、「customer.Orders」、「order.Customer」または「orders.Customers」など、リレーションシップがアイテムのプロパティであるように見えるようにすることができる。参照符号920では、リレーションシップ表現に関連付けられたメソッドが探し出される。ある場合では、このメソッドは、それによりアイテム自体から独立して定義された別のリレーションシップクラス内に存在する可能性がある。例えば、「customer.Orders」は注文リレーションシップクラス、および特にメソッド「GetOrdersGivenCustomer(Customer customer)」にマップすると、決定することができる。930では、このメソッドを実行することができる。このメソッドはデータナビゲーション、およびオプショナルで、検索、追加、除去または他のデータ対話もしくは操作など、追加の機能性を容易にすることができる。参照符号940では、適切な場合には結果を戻すことができる。
図10は、本開示の一態様によるプログラム支援方法1000である。方法1000は、リレーションシップの指定において支援することができる。参照符号1010では、特定の型のアイテムが受信、検索またはそうでない場合は獲得される。アイテムの後に続いて、1020では、トリガが受信、検索またはそうでない場合は得られる。トリガは、数ある中でも、スペース(「 」)、ドット(「.」)、およびキャリッジリターンのようなものに対応する可能性がある。参照符号1030では、支援が、例えば、定義されたリレーションシップに基づいたヒントの形態において提供される。例えば、ユーザーが「customer.」と入力する場合、数ある中でも「Orders」など、完成ヒントを提供することができる。ヒントをユーザーに対し、例えばドロップダウンメニュー内で表示することができる。選択すると、ステートメントを完成させ、「customer.Orders」と読むことができる。これは、所与のアイテムに関連付けられたすべての可能性のあるリレーションシップを記憶または思い出す負担を軽減し、とりわけ誤字を最小限にする。
ヒンティングに加えて、リレーションシップ表現に関係付けられたユニークなフォーマッティングおよび/またはカラー化など、他の形態のプログラム支援を提供することができることに留意されたい。さらに、ツールチップを提供することができ、ツールチップでは、カーソルのロールオーバーまたはホバーがあると、および/または、所定の組み合わせのキーの押し下げがあると、例えば型情報がテキストボックスまたは吹き出し内でバブルアップされる。リレーションシップ表現に関するさらなるプログラム支援もまた企図され、内容の特許請求の範囲の範囲内である。
図11は、実装コード(例えば、実行可能なファイル、中間言語...)を生成するために利用することができる、コンパイラ環境1100を示すブロック図である。しかし、環境1100の態様をまた、例えばコードエディタに関係付けられた、バックグラウンドコンパイラの一部として使用して、インテリジェントまたはコンテキスト依存プログラミング支援が提供されることを可能にすることもできる。コンパイラ環境1100は、フロントエンドコンポーネント1120、コンバータコンポーネント1130、バックエンドコンポーネント1140、エラーチェッカーコンポーネント1150、シンボルテーブル1160、パースツリー1170、および状態1180を含む、コンパイラ1120を含む。コンパイラ1120はソースコードを入力として受け入れ、実装コードを出力として作成する。入力は、限定されないが、リレーションシップ表現、クラス、および/または、本明細書で説明された他のコンストラクトを含むことができる。コンパイラ環境1100のコンポーネントおよびモジュールの間のリレーションシップは、データのメインフローを例示する。他のコンポーネントおよびリレーションシップは、明瞭および簡単にするために例示されない。実装に応じて、コンポーネントを追加、省略、複数のモジュールへ分割、他のモジュールおよび/またはモジュールの他の構成と結合することができる。
コンパイラ1120は入力として、一連のエレメントの処理に関連付けられたソースコードを有するファイルを受け入れることができる。ソースコードには、リレーションシップ表現、クラス、他の表現、メソッド、および/またはプログラムコンストラクトが含まれる場合がある。コンパイラ1120は、コンストラクトを解析し、コードを生成または注入するための1つまたは複数のコンポーネントと共に、ソースコードを処理することができる。
フロントエンドコンポーネント1120は、字句解析をソースコード上で読み取り、実行する。本質的には、フロントエンドコンポーネント1120は、一連の文字(例えば、英数字)をソースコード内で読み取り、数ある中でも定数、識別子、演算子記号、キーワード、および句読点を指示する、構文エレメントまたはトークンに変換する。
コンバータコンポーネント1130は、トークンを中間表現に解析する。例えば、コンバータコンポーネント1130は構文をチェックし、トークンを表現または他の構文構造にグループ化することができ、これらの表現または他の構文構造はステートメントツリーに合体する。概念上では、これらのツリーはパースツリー1170を形成する。さらに、および適切なように、コンバータコンポーネント1130はエントリを、関係付けられた特性と共にソースコード内で使用されたシンボル名および型情報をリストするシンボルテーブル1160に入れることができる。
状態1180を使用して、受信または検索されたソースコードの処理およびパースツリー1170の形成において、コンパイラ1120の進行を追跡することができる。例えば、異なる状態値は、コンパイラ1120がクラス定義または関数の開始であり、クラスメンバを宣言したばかりであり、または表現を完成させたことを指示する。コンパイラが進行するにつれて、コンパイラは引き続き、状態1180をアップデートする。コンパイラ1120は部分的または完全に状態1180を外部エンティティに公開する場合があり、外部エンティティは次いで入力をコンパイラ1120に提供することができる。
ソースコード内のコンストラクトまたは他の信号に基づいて(または、その機会が別の方法で認識される場合)、コンバータコンポーネント1130または別のコンポーネントはコードを注入して、効率的および適切な実行を容易にすることができる。例えば、コードを注入して、包含省略形(comprehension abbreviation)を拡張し、または、クエリ包含(query comprehension)からシーケンス演算子へ変換することができる。コンバータコンポーネント1130または他のコンポーネントにコーディングされたルールは、所望の機能性を実装するために何が行われなければならないかを指示し、このコードが注入されるべきである、または、他の演算が実行されるべきであるロケーションを識別する。注入されたコードは通常、追加されたステートメント、メタデータ、または他のエレメントを1つまたは複数のロケーションで含むが、この語にはまた、既存のソースコードを変更、削除、またはそうでない場合は修正することが含まれる可能性もある。注入されたコードを1つまたは複数のテンプレートとして、またはある他の形態で格納することができる。加えて、シンボルテーブル操作およびパースツリー変換が行われる可能性があることを理解されたい。
シンボルテーブル1160およびパースツリー1170に基づいて、バックエンドコンポーネント1140は中間表現を出力コードに変換することができる。バックエンドコンポーネント1140は中間表現を、ターゲットプロセッサ内で、またはターゲットプロセッサによって実行可能な命令、変数のためのメモリ割り振りなどに変換する。出力コードは実際のプロセッサによって実行可能にすることができるが、本発明はまた、仮想プロセッサによって実行可能である出力コードをも企図する。
さらに、フロントエンドコンポーネント1120およびバックエンドコンポーネント1140は、コード最適化など、追加の機能を実行することができ、説明された演算を単一のフェーズとして、または複数のフェーズにおいて実行することができる。コンパイラ1120のコンポーネントの様々な他の態様は、性質において従来のものであり、同等の機能を実行するコンポーネントで代用することができる。加えて、ソースコードの処理中の様々なステージで、エラーチェッカーコンポーネント1150は、字句構造におけるエラー、構文エラー、および意味エラーなどのエラーもチェックすることができる。検出エラーにおいて、チェッカーコンポーネント1150はコンパイルを停止し、エラーを示すメッセージを生成することができる。
開示された内容の様々な態様のための状況を提供するために、図12および13ならびに以下の考察は、開示された内容の様々な態様を実装することができる適切な環境の簡単な全体的説明を提供するように意図される。内容を一般に、1台のコンピュータおよび/または複数のコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能な命令との関連で上述したが、本発明をまた他のプログラムモジュールとの組み合わせで実装することもできることは、当業者には理解されよう。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、および/または、特定の抽象データ型を実装する。また、本発明の方法を他のコンピュータシステム構成により実装することができ、これらの構成には、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピューティング装置、メインフレームコンピュータ、ならびに、パーソナルコンピュータ、ハンドヘルドコンピューティング装置(例えば、携帯情報端末(PDA)、電話、腕時計...)、マイクロプロセッサベースまたはプログラマブルコンシューマまたは産業エレクトロニクスなどが含まれることは、当業者には理解されよう。例示された態様をまた分散コンピューティング環境で実装することもでき、この環境ではタスクが、通信ネットワークを通じてリンクされるリモート処理装置によって実行される。しかし、課題の革新の、すべてではない場合はいくつかの態様を、スタンドアロンコンピュータ上で実装することができる。分散コンピューティング環境では、プログラムモジュールはローカルおよびリモートのメモリストレージデバイス内に位置することができる。
図12を参照すると、本明細書で開示された様々な態様を実装するための例示的環境1210には、コンピュータ1212(例えば、デスクトップ、ラップトップ、サーバ、ハンドヘルド、プログラマブルコンシューマまたは産業エレクトロニクス...)が含まれる。コンピュータ1212には、処理装置1214、システムメモリ1216、およびシステムバス1218が含まれる。システムバス1218は、限定されないが、システムメモリ1216を含むシステムコンポーネントを処理装置1214に結合する。処理装置1214を様々な使用可能なマイクロプロセッサのいずれにすることもできる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャもまた、処理装置1214として使用することができる。
システムバス1218を、いくつかの種類のバス構造のいずれにすることもでき、これらのバス構造には、様々な使用可能なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/またはローカルバスが含まれ、このようなバスアーキテクチャは、限定されないが、11ビットバス、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MCA)、拡張ISA(EISA)、Intelligent Drive Electronics(IDE)、VESAローカルバス(VLB)、Peripheral Component Interconnect(PCI)、ユニバーサルシリアルバス(USB)、Advanced Graphics Port(AGP)、Personal Computer Memory Card International Associationバス(PCMCIA)、およびSmall Computer Systems Interface(SCSI)を含む。
システムメモリ1216には、揮発性メモリ1220および不揮発性メモリ1222が含まれる。基本入出力システム(BIOS)は、起動中など、コンピュータ1212内の複数の要素の間で情報を転送するための基本ルーチンを含み、不揮発性メモリ1222に格納される。例示のため、限定ではなく、不揮発性メモリ1222には、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリが含まれる可能性がある。揮発性メモリ1220にはランダムアクセスメモリ(RAM)が含まれ、RAMは外部キャッシュメモリとしての機能を果たす。例として、限定ではなく、RAMは多数の形態において使用可能であり、これらの形態は、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、および直接Rambus RAM(DRRAM)などである。
コンピュータ1212はまた、取外し可能/固定の、揮発性/不揮発性のコンピュータストレージメディアも含む。図12は、例えば、ディスクストレージ1224を例示する。ディスクストレージ1224は、限定されないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカードまたはメモリスティックを含む。加えて、ディスクストレージ1224はストレージメディアを別々に、または、他のストレージメディアと組み合わせて含むことができ、媒体は、限定されないが、コンパクトディスクROM装置(CD−ROM)、書き込み可能CDドライブ(CD−Rドライブ)、再書き込み可能CDドライブ(CD−RWドライブ)またはデジタル多用途ディスクROMドライブ(DVD−ROM)など、光ディスクドライブを含む。ディスクストレージデバイス1224をシステムバス1218に接続することを容易にするために、インターフェイス1226など、取外し可能または固定のインターフェイスが通常は使用される。
図12は、ユーザーと、適切なオペレーティング環境1210において説明した基本コンピュータリソースの間の、媒介物の機能を果たすソフトウェアを説明することを理解されたい。このようなソフトウェアにはオペレーティングシステム1228が含まれる。オペレーティングシステム1228をディスクストレージ1224上に格納することができ、オペレーティングシステム1228は、コンピュータシステム1212のリソースをコントロールし、割り振るように動作する。システムアプリケーション1230は、システムメモリ1216内またはディスクストレージ1224上に格納されたプログラムモジュール1232およびプログラムデータ1234を通じて、オペレーティングシステム1228によるリソースの管理を利用する。本発明を様々なオペレーティングシステムまたはオペレーティングシステムの組み合わせにより実装することができることを理解されたい。
ユーザーはコマンドまたは情報をコンピュータ1212へ、入力装置1236を通じて入力する。入力装置1236は、限定されないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどを含む。これらおよび他の入力装置は処理装置1214へ、システムバス1218を通じて、インターフェイスポート1238を介して接続する。インターフェイスポート1238には、例えば、シリアルポート、パラレルポート、ゲームポートおよびユニバーサルシリアルバス(USB)が含まれる。出力装置1240は、入力装置1236と同じ種類のポートのいくつかを使用する。したがって、例えば、USBポートを使用して入力をコンピュータ1212に提供し、情報をコンピュータ1212から出力装置1240に出力することができる。出力アダプタ1242が提供されて、他の出力装置1240の中でも特殊なアダプタを必要とするディスプレイ(例えば、フラットパネルおよびCRT)、スピーカおよびプリンタのようないくつかの出力装置1240があることが例示される。出力アダプタ1242には、例として、限定ではなく、ビデオおよびサウンドカードが含まれ、これらは出力装置1240とシステムバス1218の間の接続の手段を提供する。リモートコンピュータ1244など、他の装置および/または装置のシステムが入力および出力機能を提供することに留意されたい。
コンピュータ1212はネットワーク環境において、リモートコンピュータ1244など、1つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ1244は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースのアプライアンス、ピアデバイスまたは他の共通ネットワークノードなどにすることができ、通常は、コンピュータ1212に関連して上述した要素の多数またはすべてが含まれる。簡潔にするため、メモリストレージデバイス1246のみをリモートコンピュータ1244と共に例示する。リモートコンピュータ1244はコンピュータ1212に、ネットワークインターフェイス1248を通じて論理的に接続され、次いで通信接続1250を介して物理的に接続される。ネットワークインターフェイス1248は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)など、通信ネットワークを包含する。LAN技術には、ファイバー分散データインターフェイス(FDDI)、Copper Distributed Data Interface(CDDI)、イーサネット(登録商標)/IEEE 802.3、トークンリング/IEEE 802.5などが含まれる。WAN技術は、限定されないが、ポイントツーポイントリンク、統合デジタルサービス通信網(ISDN)およびその変形形態のような回線交換網、パケット交換網およびデジタル加入者線(DSL)を含む。
通信接続1250は、ネットワークインターフェイス1248をバス1218に接続するために使用されるハードウェア/ソフトウェアを指す。通信接続1250を、例示的に明瞭にするためにコンピュータ1212内に示すが、コンピュータ1212の外部にすることもできる。ネットワークインターフェイス1248への接続のために必要なハードウェア/ソフトウェアには、例示のためにのみ、内部および外部技術が含まれ、これらの技術は、通常の電話のグレードのモデム、ケーブルモデム、パワーモデム、およびDSLモデムを含むモデム、ISDNアダプタ、および、イーサネット(登録商標)カードまたはコンポーネントなどである。
図13は、本発明が対話することができるサンプルコンピューティング環境1300の概略なブロック図である。システム1300は1つまたは複数のクライアント1310を含む。クライアント1310を、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)にすることができる。システム1300はまた、1つまたは複数のサーバ1330をも含む。したがって、システム1300は、他のモデルの中でも、2層クライアントサーバモデルまたは多層モデル(例えば、クライアント、中間層サーバ、データサーバ)に対応する可能性がある。サーバ1330もまた、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)にすることができる。サーバ1330は、例えば、本発明を使用することによって変換を実行するためのスレッドを収容することができる。クライアント1310とサーバ1330の間の1つの可能な通信は、2つ以上のコンピュータプロセスの間で送信されるように適合されたデータパケットの形態であってもよい。
システム1300は、クライアント1310とサーバ1330の間の通信を容易にするために使用することができる、通信フレームワーク1350を含む。クライアント1310は、クライアント1310のローカルで情報を格納するために使用することができる1つまたは複数のクライアントデータストア1360に、動作可能に接続される。同様に、サーバ1330は、サーバ1330のローカルで情報を格納するために使用することができる1つまたは複数のサーバデータストア1340に、動作可能に接続される。
上述したものには、主張された内容の態様の実施例が含まれる。言うまでもなく、主張された内容を説明するためのコンポーネントまたは方法のあらゆる考えられる組み合わせを説明することは可能ではないが、開示された内容の多数のさらなる組み合わせおよび置換が可能であることは、当業者には理解されよう。したがって、開示された内容は、付属の特許請求の範囲の精神および範囲内に入るこのようなすべての変更、修正および変形形態を包含するように意図される。さらに、「含む」、「有する」もしくは「有している」という語、またはそれらの変形物が詳細な説明または特許請求の範囲において使用される範囲で、このような語は、「備える」という語が、特許請求の範囲内の前後を接続させる語として使用されるときに解釈されるときの「備える」と同様に、包含的であるように意図される。
リレーションシップシステムのブロック図である。 例示的リレーションシップシステムのブロック図である。 影響コンポーネントを含むリレーションシップシステムのブロック図である。 コンパイルシステムのブロック図である。 データとの対話を容易にするためのインターフェイスシステムのブロック図である。 統合された開発システムまたは環境のブロック図である。 リレーションシップを定義する方法のフローチャートである。 コンパイル方法のフローチャートである。 データ対話方法のフローチャートである。 プログラム開発を支援する方法のフローチャートである。 例示的コンパイル環境の概略的なブロック図である。 適切なオペレーティング環境を例示する概略的なブロック図である。 サンプルコンピューティング環境の概略的なブロック図である。
符号の説明
110 アイテムレシーバコンポーネント
120 リレーションシップ生成コンポーネント

Claims (20)

  1. コンピュータ実行可能なコンポーネントを有するコンピュータに実装されたリレーションシップシステムであって、
    2つ以上のプログラムアイテムを取得するアイテムレシーバコンポーネントと、
    前記レシーバコンポーネントからアイテムを受信し、および1つまたは複数のリレーションシップを前記アイテムの間で定義するコンストラクトを生成するリレーションシップ生成コンポーネントと
    を備えたことを特徴とするシステム。
  2. 前記アイテムは、データ型およびXMLドキュメントのうち1つであることを特徴とする請求項1に記載のシステム。
  3. コンストラクトは、クラスであることを特徴とする請求項1に記載のシステム。
  4. 前記クラスは、特定のアイテムエレメントを、指定されたリレーションシップにより検索するためのメソッドを含むことを特徴とする請求項3に記載のシステム。
  5. 前記クラスは、静的クラスであることを特徴とする請求項4に記載のシステム。
  6. 前記1つまたは複数のリレーションシップは、1対1、1対多数、多数対1、および多数対多数を含む2項であることを特徴とする請求項1に記載のシステム。
  7. 前記1つまたは複数のリレーションシップは、前記アイテムに関するナビゲーション計算をカプセル化するメソッドにより指定されることを特徴とする請求項1に記載のシステム。
  8. 前記1つまたは複数のリレーションシップは、コンポジション、関連付けおよびリンクのうち1つを含むことを特徴とする請求項1に記載のシステム。
  9. 前記関連付けは、共通値、条件およびエンティティのうち1つであることを特徴とする請求項1に記載のシステム。
  10. リレーションシップについてアイテム固有の名前を生成するための影響コンポーネントをさらに備えたことを特徴とする請求項1に記載のシステム。
  11. データ構造を格納しているコンピュータ読取可能な媒体であって、
    第1のデータ型と、
    第2のデータ型と、
    前記第1のデータ型と前記第2のデータ型との間のリレーションシップを、前記型から独立して定義するクラスと
    を備えたことを特徴とするコンピュータ読取可能な媒体。
  12. 前記クラスは、型の間の前記リレーションシップを定義する計算をカプセル化するメソッドを含むことを特徴とする請求項11に記載のコンピュータ読取可能な媒体。
  13. 前記リレーションシップは、2項、コンポジション、関連付けおよびリンクのうち1つを含むことを特徴とする請求項12に記載のコンピュータ読取可能な媒体。
  14. 前記型は、データベーステーブルにマップし、および前記リレーションシップは、前記テーブル間の共通プロパティ上で結合を取り込むことを特徴とする請求項12に記載のコンピュータ読取可能な媒体。
  15. コンピュータ実行可能な動作を有し、データ対話を容易にするコンピュータに実装された方法であって、
    2つ以上のアイテム間のリレーションシップ表現を受信するステップと、
    前記表現に関連付けられた前記アイテムの外部でメソッドを探し出すステップと、
    前記メソッドを実行して、前記リレーションシップを計算し、および/または前記アイテムの間でナビゲートするステップと
    を備えたことを特徴とする方法。
  16. 結果を戻すステップをさらに備えたことを特徴とする請求項15に記載の方法。
  17. リレーションシップ表現を受信するステップは、プロパティ表記における型間のリレーションシップを受信するステップを備えたことを特徴とする請求項15に記載の方法。
  18. メソッドを探し出すステップは、前記表現をプロパティ表記からメソッド名に拡張するステップを含むことを特徴とする請求項17に記載の方法。
  19. メソッドを探し出すステップは、1つまたは複数のリレーションシップメソッドを含んでいるリレーションシップクラスを識別するステップを含むことを特徴とする請求項18に記載の方法。
  20. 前記リレーションシップは、2項、コンポジション、関連付けおよびリンクのうち1つを含むことを特徴とする請求項15に記載の方法。
JP2006007830A 2005-02-18 2006-01-16 アイテム間のリレーションシップの生成、およびアイテムのナビゲートをするためのシステム Expired - Fee Related JP5592591B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US65423705P 2005-02-18 2005-02-18
US60/654,237 2005-02-18
US11/230,983 US7962497B2 (en) 2005-02-18 2005-09-20 Relationship modeling
US11/230,983 2005-09-20

Publications (2)

Publication Number Publication Date
JP2006228200A true JP2006228200A (ja) 2006-08-31
JP5592591B2 JP5592591B2 (ja) 2014-09-17

Family

ID=36676400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006007830A Expired - Fee Related JP5592591B2 (ja) 2005-02-18 2006-01-16 アイテム間のリレーションシップの生成、およびアイテムのナビゲートをするためのシステム

Country Status (9)

Country Link
US (1) US7962497B2 (ja)
EP (1) EP1693751A3 (ja)
JP (1) JP5592591B2 (ja)
KR (1) KR101224813B1 (ja)
CN (1) CN1821957B (ja)
AU (1) AU2005246946B2 (ja)
BR (1) BRPI0600051A (ja)
CA (1) CA2533073C (ja)
RU (1) RU2421784C2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPS119902A0 (en) * 2002-03-20 2002-04-18 CRC for Sustainable Tourism Pty Limited Data handling
US20090158252A1 (en) * 2005-11-30 2009-06-18 France Telecom Method for Creating an Approximation Graph Relating to the Behavior of the Man-Machine Interface of an Application
US8091069B2 (en) * 2006-04-11 2012-01-03 Rojer Alan S Module specification language and meta-module
US8635596B2 (en) * 2006-04-21 2014-01-21 Microsoft Corporation Model-based event processing
US7860823B2 (en) * 2006-05-04 2010-12-28 Microsoft Corporation Generic interface for deep embedding of expression trees in programming languages
US8479159B2 (en) * 2006-10-20 2013-07-02 International Business Machines Corporation System and method for automatically determining relationships between software artifacts using multiple evidence sources
US20080312907A1 (en) * 2007-04-05 2008-12-18 Perception Labs Method and system for data modeling according to user perspectives
US8516458B2 (en) * 2008-02-29 2013-08-20 Iti Scotland Limited System representation and handling techniques
FR2963124A1 (fr) * 2010-04-15 2012-01-27 Pod Programming Procede de gestion de donnees, dispositif, et produit programme d'ordinateur correspondant.
US8954927B2 (en) * 2010-12-30 2015-02-10 Sap Ag Management of objects within a meta-data repository
US10445371B2 (en) 2011-06-23 2019-10-15 FullContact, Inc. Relationship graph
US9684696B2 (en) 2011-06-23 2017-06-20 Fullcontact Inc. Information cataloging
US8898628B2 (en) * 2011-09-23 2014-11-25 Ahmad RAZA Method and an apparatus for developing software
US9031975B2 (en) 2012-11-06 2015-05-12 Rockwell Automation Technologies, Inc. Content management
US9026652B1 (en) 2014-07-09 2015-05-05 Fmr Llc Web service asset management and web service information storage
US10802670B2 (en) * 2016-03-11 2020-10-13 Salesforce.Com, Inc. User interface for polymorphic lookup
CN110083339A (zh) * 2018-01-26 2019-08-02 拜椰特(上海)软件技术有限公司 一种新型计算机编程语言
US20210117436A1 (en) * 2019-10-22 2021-04-22 Honeywell International Inc. Methods, apparatuses, and systems for data mapping
KR102357429B1 (ko) * 2021-01-06 2022-02-08 주식회사 플럭시티 3차원 모델링 데이터의 공간정보 설정 및 활용 방법, 장치 및 컴퓨터-판독가능 기록매체

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078926A (en) * 1997-12-18 2000-06-20 Persistence Software, Inc. Method and apparatus for performing multi-class object fetch in a database management system
JP2003337726A (ja) * 2002-05-20 2003-11-28 Hitachi Software Eng Co Ltd データベースアクセスプログラム生成方法
US20050021523A1 (en) * 2002-01-08 2005-01-27 Wafik Farag Holistic dynamic information management platform for end-users to interact with and share all information categories, including data, functions, and results, in a collaborative secure venue
US6854113B1 (en) * 1998-08-28 2005-02-08 Borland Software Corporation Mixed-mode execution for object-oriented programming languages

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
US5659723A (en) * 1991-12-20 1997-08-19 International Business Machines Corporation Entity/relationship to object oriented logical model conversion method
CA2162020C (en) * 1993-05-10 2000-08-01 Benjamin V. Shapiro Method and apparatus for the automatic analysis of computer software
WO1995003586A1 (en) 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
WO1996034350A1 (en) * 1995-04-24 1996-10-31 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
JP3475690B2 (ja) * 1996-01-29 2003-12-08 トヨタ自動車株式会社 製品情報管理方法および製品情報管理システム
US6477527B2 (en) * 1997-05-09 2002-11-05 International Business Machines Corporation System, method, and program for object building in queries over object views
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US20050125401A1 (en) * 2003-12-05 2005-06-09 Hewlett-Packard Development Company, L. P. Wizard for usage in real-time aggregation and scoring in an information handling system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078926A (en) * 1997-12-18 2000-06-20 Persistence Software, Inc. Method and apparatus for performing multi-class object fetch in a database management system
US6854113B1 (en) * 1998-08-28 2005-02-08 Borland Software Corporation Mixed-mode execution for object-oriented programming languages
US20050021523A1 (en) * 2002-01-08 2005-01-27 Wafik Farag Holistic dynamic information management platform for end-users to interact with and share all information categories, including data, functions, and results, in a collaborative secure venue
JP2003337726A (ja) * 2002-05-20 2003-11-28 Hitachi Software Eng Co Ltd データベースアクセスプログラム生成方法

Also Published As

Publication number Publication date
RU2421784C2 (ru) 2011-06-20
US7962497B2 (en) 2011-06-14
RU2006101269A (ru) 2007-08-20
KR20060093018A (ko) 2006-08-23
CA2533073A1 (en) 2006-08-18
AU2005246946A1 (en) 2006-09-07
EP1693751A2 (en) 2006-08-23
CA2533073C (en) 2012-09-04
BRPI0600051A (pt) 2006-10-03
CN1821957A (zh) 2006-08-23
JP5592591B2 (ja) 2014-09-17
EP1693751A3 (en) 2007-11-07
KR101224813B1 (ko) 2013-01-21
US20060190927A1 (en) 2006-08-24
AU2005246946B2 (en) 2011-05-26
CN1821957B (zh) 2014-03-12

Similar Documents

Publication Publication Date Title
JP5592591B2 (ja) アイテム間のリレーションシップの生成、およびアイテムのナビゲートをするためのシステム
US10671355B2 (en) Code completion with machine learning
Kaliszyk et al. Holstep: A machine learning dataset for higher-order logic theorem proving
US7730448B2 (en) Layered type systems
US9383973B2 (en) Code suggestions
US9052979B2 (en) Program code library searching and selection in a networked computing environment
JP2009505174A (ja) ラムダ式
KR20040111099A (ko) 코드 세그먼트들을 생성, 관리, 및 사용하는 시스템 및방법
JP2009535730A (ja) プログラミング言語における式ツリーの深い埋め込みのためのジェネリックインターフェイス
US11586839B2 (en) Code completion of method parameters with machine learning
US11243750B2 (en) Code completion with machine learning
KR20080038306A (ko) 널가능과 후 바인딩
Wagelaar et al. Platform ontologies for the model-driven architecture
Ramackers et al. From prose to prototype: synthesising executable UML models from natural language
Romanov et al. Representing programs with dependency and function call graphs for learning hierarchical embeddings
EP3942404B1 (en) Code completion for overloaded methods
Saad Data-flow based model analysis: Approach, Implementation and Applications
Kegel Automating Feature Requests for User-Driven Model Evolution at Runtime
Sänger et al. Large Language Models to the Rescue: Reducing the Complexity in Scientific Workflow Development Using ChatGPT
Sarkar et al. Python for Natural Language Processing
Fancher The Book of F#: Breaking Free with Managed Functional Programming
Garside Alembicue
Machi et al. Automated Generation of Stand-Alone Source Codes for Software Libraries
EP4147122A1 (en) Code completion with machine learning
MXPA06000678A (en) Relationship modeling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120727

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121217

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20121218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130115

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130208

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130716

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130722

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130823

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20130823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140801

R150 Certificate of patent or registration of utility model

Ref document number: 5592591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees