(57)【要約】      （修正有）【課題】手続き型関数を識別してセマンティックルールの代わりに生成された手続き型コードを組み込むトリプルのプロパティと共にルール結論・前提の両方におけるトリプルに存在する変数を識別する。【解決手段】結論トリプルのサブジェクトである変数を備える前提トリプルがタイプステートメントであるか判定する（３１０）。タイプステートメントではないがサブジェクト変数をバインドするルール前提／結論内のトリプルのプロパティの領域も判定される（３１２）。手続き型関数は、タイプステートメントであると判定された前提トリプルによって識別されたセマンティッククラスと、サブジェクト変数を備えるがタイプステートメントではない結論・前提トリプルの領域と識別されたクラスとの交差から変換された手続き型クラスに関連付けられ、結論トリプル内のオブジェクト変数の値を計算する前提要素を使用して判定されたセマンティックルール計算で更新される。【選択図】図３
2012234536.tif 000002
【特許請求の範囲】
【請求項１】
セマンティックモデルおよびルールを所望の手続き型言語の手続き型コードに変換するためのコンピュータ化された方法であって、
セマンティックルールの結論を評価して、前記セマンティックルールによって計算された情報を判定するステップであって、前記セマンティックルール結論内の１つまたは複数の要素が１つまたは複数のトリプルを備える、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプルのそれぞれにおける１つまたは複数の変数を識別するステップであって、前記１つまたは複数の変数も前記セマンティックルールの前提に存在する、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプル内の各トリプルのプロパティを判定して、前記セマンティックルールの代わりに生成された手続き型コードが組み込まれる手続き型関数を識別するステップと、
前記１つまたは複数の変数内の１つまたは複数のサブジェクト変数をバインドする前記セマンティックルール前提内の１つまたは複数の要素を識別するステップであって、前記１つまたは複数のサブジェクト変数のそれぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのサブジェクトである、ステップと、
前記識別されたサブジェクト変数の１つまたは複数を備える前記セマンティックルール前提内の１つまたは複数のトリプルが「タイプ」ステートメントであるかどうかを判定するステップと、
前記識別されたサブジェクト変数の１つまたは複数を備え、「タイプ」ステートメントではない前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記１つまたは複数のトリプルのそれぞれの前記プロパティの領域を判定するステップと、
前記手続き型関数を、「タイプ」ステートメントであると判定された前記トリプルによって識別された前記クラスと、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記識別されたサブジェクト変数を備え、「タイプ」ステートメントではない前記トリプルの前記領域と識別されたクラスとの交差から得られた１つまたは複数のセマンティッククラスから変換された１つまたは複数の手続き型クラスに関連付けるステップと、
前記１つまたは複数の変数内の１つまたは複数のオブジェクト変数の値を計算する前記セマンティックルール前提内の１つまたは複数の要素に基づいて前記セマンティックルールによって行われた計算を判定するステップであって、前記１つまたは複数のオブジェクト変数のそれぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのオブジェクトである、ステップと、
関連付けられた手続き型クラス内の前記手続き型関数を、前記判定された計算の代わりに生成された手続き型コードで更新して、前記計算された値を返すステップと
を備える方法。
【請求項２】
１つまたは複数のセマンティッククラスを所望の手続き型言語の対応するクラスに変換するステップと、
前記セマンティッククラスに関連付けられた１つまたは複数のプロパティを対応する手続き型クラスのフィールドに変換するステップと、
前記セマンティッククラスに関連付けられたインスタンスを対応する手続き型クラスのインスタンスに変換するステップと
をさらに備える、請求項１記載のコンピュータ化された方法。
【請求項３】
前記手続き型関数を使用して、前記手続き型クラスの前記変換されたインスタンスを処理し、前記セマンティックルール結論内の前記１つまたは複数のトリプル内の前記１つまたは複数の変数と前記セマンティックルール前提内の前記１つまたは複数の要素との間のバインディングを判定するステップをさらに備える、請求項２記載のコンピュータ化された方法。
【請求項４】
前記１つまたは複数のトリプルが数学的有向グラフ表現で前記セマンティックモデルおよびルールの少なくとも一部を定義し、前記有向グラフが、セマンティッククラス記述、およびノードとして前記セマンティッククラスに関連付けられた前記インスタンス、ならびに前記有向グラフ表現のエッジとして前記セマンティッククラスに関連付けられた前記プロパティを備える、請求項１記載のコンピュータ化された方法。
【請求項５】
セマンティックモデルおよびルールから所望のコンピュータプログラミング言語の手続き型コードを生成するための実行可能プログラムをその上に有する非一時的コンピュータ可読記憶媒体であって、前記プログラムが処理ユニット（１０４）に、
セマンティックルールの結論を評価して、前記セマンティックルールによって計算された情報を判定するステップであって、前記セマンティックルール結論内の１つまたは複数の要素が１つまたは複数のトリプルを備える、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプルのそれぞれ内の１つまたは複数の変数を識別するステップであって、前記１つまたは複数の変数も前記セマンティックルールの前提に存在する、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプル内の各トリプルのプロパティを判定して、前記セマンティックルールの代わりに生成された手続き型コードが組み込まれる手続き型関数を識別するステップと、
前記１つまたは複数の変数内の１つまたは複数のサブジェクト変数をバインドする前記セマンティックルール前提内の１つまたは複数の要素を識別するステップであって、前記１つまたは複数のサブジェクト変数のそれぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのサブジェクトである、ステップと、
前記識別されたサブジェクト変数の１つまたは複数を備える前記セマンティックルール前提内の１つまたは複数のトリプルが「タイプ」ステートメントであるかどうかを判定するステップと、
前記識別されたサブジェクト変数の１つまたは複数を備え「タイプ」ステートメントではない、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記１つまたは複数のトリプルのそれぞれの前記プロパティの前記領域を判定するステップと、
前記手続き型関数を、「タイプ」ステートメントであると判定された前記トリプルによって識別された前記クラスと、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記識別されたサブジェクト変数を備え「タイプ」ステートメントではない前記トリプルの前記領域と識別されたクラスとの交差から得られた１つまたは複数のセマンティッククラスから変換された１つまたは複数の手続き型クラスに関連付けるステップと、
前記１つまたは複数の変数内の１つまたは複数のオブジェクト変数の値を計算する前記セマンティックルール前提内の１つまたは複数の要素に基づいて前記セマンティックルールによって行われた計算を判定するステップであって、前記１つまたは複数のオブジェクト変数の前記それぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのオブジェクトである、ステップと、
関連付けられた手続き型クラス内の前記手続き型関数を前記判定された計算の代わりに生成された手続き型コードで更新して、前記計算された値を返すステップと
を実行するように指令する、非一時的コンピュータ可読記憶媒体。
【請求項６】
前記プログラムが前記処理ユニット（１０４）に、
１つまたは複数のセマンティッククラスを所望の手続き型言語のクラスに変換するステップと、
前記セマンティッククラスに対応する１つまたは複数のプロパティを対応する手続き型クラスのフィールドに変換するステップと、
前記セマンティッククラスに対応するインスタンスを対応する手続き型クラスのインスタンスに変換するステップと
を実行するように指令する、請求項５記載の非一時的コンピュータ可読記憶媒体。
【請求項７】
前記プログラムが前記処理ユニット（１０４）に、前記手続き型関数を使用して、前記手続き型クラスの前記変換されたインスタンスを処理し、前記セマンティックルール結論内の前記トリプル内の前記１つまたは複数の変数と、前記セマンティックルール前提内の前記１つまたは複数の要素との間のバインディングを判定するように指令する、請求項５記載の非一時的コンピュータ可読記憶媒体。
【請求項８】
セマンティックモデルおよびルールから所望のコンピュータプログラミング言語の手続き型コードを生成するためのシステムであって、
１つまたは複数のセマンティッククラス、前記セマンティッククラスに対応する１つまたは複数のプロパティ、前記セマンティッククラスの１つまたは複数のインスタンス、前記セマンティッククラスに対応する１つまたは複数のルール、またはそれらの組合せを備えるリポジトリ（１０８）と、
前記リポジトリ（１０８）に結合された処理ユニット（１０４）であって、
１つまたは複数のセマンティッククラスを所望の手続き型言語のクラスに変換し、
前記セマンティッククラスに対応する１つまたは複数のプロパティを対応する手続き型クラスのフィールドに変換し、
前記セマンティッククラスに対応するインスタンスを対応する手続き型クラスのインスタンスに変換し、
セマンティックルールの結論を評価して、前記セマンティックルールによって計算された情報を判定し、前記セマンティックルール結論内の１つまたは複数の要素が１つまたは複数のトリプルを備え、
前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプルのそれぞれにおける１つまたは複数の変数を識別し、前記１つまたは複数の変数も前記セマンティックルールの前提に存在し、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプル内の各トリプルのプロパティを判定して、前記セマンティックルールの代わりに生成された手続き型コードが組み込まれる手続き型関数を識別し、
前記１つまたは複数の変数内の１つまたは複数のサブジェクト変数をバインドする前記セマンティックルール前提内の１つまたは複数の要素を識別し、前記１つまたは複数の変数のそれぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのサブジェクトであり、
前記識別されたサブジェクト変数の１つまたは複数を備える前記セマンティックルール前提内の１つまたは複数のトリプルが「タイプ」ステートメントであるかどうかを判定し、
前記識別されたサブジェクト変数の１つまたは複数を備え「タイプ」ステートメントではない、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記１つまたは複数のトリプルのそれぞれの前記プロパティの前記領域を判定し、
前記手続き型関数を、「タイプ」ステートメントであると判定された前記トリプルによって識別された前記クラスと、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記識別されたサブジェクト変数を備え、「タイプ」ステートメントではない前記トリプルの領域と識別されたクラスとの交差から得られた１つまたは複数のセマンティッククラスから変換された１つまたは複数の手続き型クラスに関連付け、
前記１つまたは複数の変数内の１つまたは複数のオブジェクト変数の値を計算する前記セマンティックルール前提内の１つまたは複数の要素に基づいて前記セマンティックルールによって行われた計算を判定し、前記１つまたは複数のオブジェクト変数の前記それぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのオブジェクトであり、
関連付けられた手続き型クラス内の前記手続き型関数を、前記判定された計算の代わりに生成された手続き型コードで更新し、前記計算された値を返す
処理ユニット（１０４）と
を備えるシステム。
【請求項９】
前記処理ユニット（１０４）が、前記所望の手続き型言語の、前記セマンティッククラス、前記プロパティ、前記インスタンス、前記セマンティックルール、またはそれらの組合せに対応する実行可能なアプリケーションを生成する、請求項８記載のシステム。
【請求項１０】
セマンティックモデルおよびルールを所望の手続き型言語の手続き型コードに変換するためのコンピュータ化された方法であって、
１つまたは複数のセマンティッククラスを所望の手続き型言語のクラスに変換するステップと、
前記セマンティッククラスに対応する１つまたは複数のプロパティを対応する手続き型クラスのフィールドに変換するステップと、
前記セマンティッククラスに対応するインスタンスを対応する手続き型クラスのインスタンスに変換するステップと、
セマンティックルールの結論を評価して、前記セマンティックルールによって計算された情報を判定するステップであって、前記セマンティックルール結論内の１つまたは複数の要素が１つまたは複数のトリプルを備える、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプルのそれぞれ内の１つまたは複数の変数を識別するステップであって、前記１つまたは複数の変数も前記セマンティックルールの前提に存在する、ステップと、
前記セマンティックルール結論内の前記１つまたは複数の要素のそれぞれごとに前記１つまたは複数のトリプル内の各トリプルのプロパティを判定して、前記セマンティックルールの代わりに生成された手続き型コードが組み込まれる手続き型関数を識別するステップと、
前記１つまたは複数の変数内の１つまたは複数のサブジェクト変数をバインドする前記セマンティックルール前提内の１つまたは複数の要素を識別するステップであって、前記１つまたは複数のサブジェクト変数のそれぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのサブジェクトである、ステップと、
前記識別されたサブジェクト変数の１つまたは複数を備える前記セマンティックルール前提内の１つまたは複数のトリプルが「タイプ」ステートメントであるかどうかを判定するステップと、
前記識別されたサブジェクト変数の１つまたは複数を備え「タイプ」ステートメントではない、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記１つまたは複数のトリプルのそれぞれの前記プロパティの前記領域を判定するステップと、
前記手続き型関数を、「タイプ」ステートメントであると判定された前記トリプルによって識別された前記クラスと、前記セマンティックルール前提、前記セマンティックルール結論、またはそれらの組合せ内の前記識別されたサブジェクト変数を備え「タイプ」ステートメントではない前記トリプルの前記領域と識別された前記クラスとの交差から得られた１つまたは複数のセマンティッククラスから変換された１つまたは複数の手続き型クラスに関連付けるステップと、
前記１つまたは複数の変数内の１つまたは複数のオブジェクト変数の値を計算する前記セマンティックルール前提内の１つまたは複数要素に基づいて前記セマンティックルールによって行われた計算を判定するステップであって、前記１つまたは複数のオブジェクト変数の前記それぞれが前記セマンティックルール結論内の前記１つまたは複数のトリプルの少なくとも１つのオブジェクトである、ステップと、
関連付けられた手続き型クラス内の前記手続き型関数を前記判定された計算の代わりに生成された手続き型コードで更新して前記計算された値を返すステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
インターネットおよびワールドワイドウェブ（ＷＷＷ）の出現によって、多種多様な情報の使用および発信が一般的になってきた。しかし、ウェブを十分に利用するには、利用可能な情報を人間だけでなく機械からもアクセスできるようにして、対応する構文に依存せずに自動的に処理されることが可能なフォーマットでデータを共用することができるようにすることが必要である。
【背景技術】
【０００２】
そのために、ワールドワイドウェブコンソーシアム（Ｗ３Ｃ）が、共用の規格、ツール、および言語を使用して、多数の関心領域において知識を捕捉し使用するためのかなりのポテンシャルを提供するセマンティックウェブイニシアティブを提案した。したがって、セマンティック技術（ウェブ）スタックは、技術の複数の層を含み、各層は前の層に基づき、さらに暗号のクロスカッティング層を含む。さらに、セマンティック技術は、セマンティックモデルまたはオントロジを使用して、いかなる特定のフォーマットをも超越する形式論理モデルでデータを記述することにより知識を表す。具体的には、セマンティックモデルまたはオントロジは、議論領域のクラス、プロパティ、およびインスタンスなどの概念の形式表現である。
【０００３】
ウェブオントロジ言語（ＯＷＬ）は、例えば、ウェブ上でセマンティックモデルを生成し共用するためのＷ３Ｃ勧告である。具体的には、ＯＷＬは、オントロジ定義のための手段を提供し、定義されたモデルから新規情報をどのように得るかについての形式意味論を規定する。領域のオントロジまたは概念が形式モデルで捕捉された後は、推論器またはルールエンジンは、通常はセマンティック技術スタック内の個別のブロックに実装され、セマンティックモデルを処理して、例えば対応するクラスメンバーシップおよびインスタンスプロパティについての論理推論を行うことができる。論理推論を行う以外に、セマンティックモデリングは、サブジェクトマターエキスパート（ＳＭＥ）がルールの前提および結論の中の領域の概念を使用して「ビジネスルール」を書くことができるようにする。そのために、ＳＭＥは、例えば、セマンティックウェブルール言語（ＳＷＲＬ）、Ｊｅｎａルール、または、定義されたセマンティックモデルを増大しそれらに依存するルールを作成するための任意の他の適切なルール言語を使用することができる。
【０００４】
セマンティックモデルおよびルールは、現実世界のシナリオをモデル化し、領域知識を捕捉するために非常に有用な方法であるが、これらのモデルは、しばしば、実施上の問題に関係なく開発され、それらだけで実施することはできない。もっと正確に言えば、セマンティックルールは、推論器／ルールエンジンによって処理または解釈されるべき宣言的知識である。したがって、検証、実行制御および性能を含む様々な理由で、これらのモデルを手続き型コードに変換することが望ましいと言える。
【０００５】
一般に、オントロジのクラスおよび対応するプロパティおよびインスタンスを、オブジェクト指向言語のクラスおよび対応するフィールドおよびインスタンスに変換することによる部分コード生成は可能であり、比較的簡単である。具体的には、いくつかの実施形態では、オントロジクラスのインスタンスを、インメモリインスタンスに、またはセマンティックストアもしくはリレーショナルデータベースなどのリポジトリの中のデータに変換することができる。次いで、インスタンスデータは、インメモリクラスインスタンス、インスタンスデータを格納するセマンティックリポジトリまたはリレーショナルデータベースへのアプリケーションプログラミングインターフェース（ＡＰＩ）を使用してアクセスされる。
【０００６】
これらの従来の技法は、何らかのコード生成を提供するが、しばしば、複雑で独立して実施されるセマンティックルールを手続き型コードに変換することができない。セマンティックルールはセマンティックモデルに対応する論理推論および領域特有の関係を提供するので、これらのルールを手続き型コードに変換することができないと、生成されたコードによる概念情報を適切に捕捉することができなくなる。
【０００７】
セマンティックモデルおよびルールからコードを生成するための効果的なシステムおよび方法を開発することが望ましい。具体的には、セマンティックモデルおよびルールを、捕捉された情報の使用を容易にし、システム検証を容易にし、システム性能を改善する手続き型コードに変換することを可能にする技法が必要である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第７７６１４７８号明細書
【発明の概要】
【０００９】
本発明の諸態様によれば、セマンティックモデルおよびルールを所望の手続き型言語の手続き型コードに変換するための方法およびシステムが提示される。本方法は、セマンティックルール結論を評価して、１つまたは複数のトリプルを含むセマンティックルールによって計算された情報を判定するステップを含む。さらに、本方法は、手続き型関数を識別してセマンティックルールの代わりに生成された手続き型コードを組み込むトリプルのプロパティと共にルール結論および前提の両方におけるトリプルに存在する変数を識別する。本方法は、結論トリプルのサブジェクトである変数を備える前提トリプルが「タイプ」ステートメントであるかどうかをさらに判定する。さらに、「タイプ」ステートメントではないがサブジェクト変数をバインドするルール前提および／または結論内のトリプルのプロパティの領域も判定される。次いで、手続き型関数は、「タイプ」ステートメントであると判定された前提トリプルによって識別されたセマンティッククラスと、サブジェクト変数を備えるが「タイプ」ステートメントではない結論または前提トリプルの領域と識別されたクラスとの交差（ｉｎｔｅｒｓｅｃｔｉｏｎ）から変換された手続き型クラスに関連付けられる。さらに、手続き型関数は、結論トリプル内のオブジェクト変数の値を計算する前提要素を使用して判定されたセマンティックルール計算結果で、関連付けられた手続き型クラスにおいて更新される。さらに、セマンティックモデルおよびルールから所望のコンピュータプログラミング言語の手続き型コードを生成するための実行可能プログラムを含む非一時的コンピュータ可読記憶媒体も開示される。
【００１０】
本技法のこれらおよび他の特徴、態様、ならびに利点は、全図面にわたって同様の符号は同様の部分を表す添付の図面を参照しながら以下の詳細な説明を読めばよりよく理解されるようになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本技法の諸態様による、セマンティックモデルおよびルールからコードを生成するための例示的システムのブロック図である。
【図２】本技法の諸態様による、手続き型モデルおよびルールから手続き型コードを生成するための例示的方法を示す流れ図である。
【図３】本技法の諸態様による、手続き型ルールに対応する手続き型コードを生成するための例示的方法を示す流れ図である。
【発明を実施するための形態】
【００１２】
以下の説明は、手続き型モデルおよびルールからコードを生成するためのシステムおよび方法を提示する。具体的には、本明細書で例示されるいくつかの実施形態は、手続き型ルールを、ルール前提および／または結論に基づいてルールの範囲を識別することによりオブジェクト指向プログラミング言語の実行可能コードに変換するための技法を説明する。そのために、オブジェクト指向プログラミング言語は、例えば、Ｊａｖａ（商標）、Ｃ＋＋、Ｓｍａｌｌｔａｌｋ、およびＰｙｔｈｏｎを含む。本変換技法の様々な実施形態を実施するのに適した例示的環境を図１に関連して以下の節で説明する。
【００１３】
図１は、１つまたは複数のセマンティックモデルおよびルールを、Ｊａｖａ（商標）などのオブジェクト指向手続き型プログラミング言語の実行可能なアプリケーション１０２に変換するための例示的コード生成システム１００を示す。一実施形態では、システム１００は、例えば、汎用プロセッサ（ＧＰＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または特定用途向け集積回路（ＡＳＩＣ）を含んでよい汎用コンピューティングシステムである。さらに、本明細書では、用語「アプリケーション」は、システム１００上で実行する１０２全体、またはセマンティックモデルおよびルールによって記述された関数および情報の少なくとも一部を実施するアプリケーション１０２の中の１つもしくは複数のモジュールを指す。
【００１４】
したがって、一実施形態では、システム１００は、ユーザ入力および／またはアプリケーション要件に基づいてアプリケーション１０２を準備し実行するための処理ユニット１０４を含む。そのために、処理ユニット１０４は、例えば、１つまたは複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デュアルコアプロセッサ、または任意の他の適切な処理デバイスを含む。さらに、いくつかの実施形態では、処理ユニット１０４は、定義された仕様またはユーザ要件に基づいてアプリケーション１０２のための手続き型コードを生成するためにインターネットなどの有線および／または無線ネットワーク（図示せず）を介して１つまたは複数の入力／出力デバイス１０６およびデータリポジトリ１０８に通信可能に結合される。
【００１５】
そのために、一実施形態では、処理ユニット１０４は、着信データを一緒に処理し、アプリケーション１０２においてセマンティックモデルを手続き型コードに変換する推論ユニット１１０およびコードジェネレータ１１２をさらに含む。通常、セマンティックモデルは、セマンティッククラスならびに対応するプロパティおよびインスタンスを定義して、関心領域の概念を定義する。セマンティック概念は、いくつかの実施形態では、データリポジトリ１０８にセマンティッククラス記述１１４、対応するプロパティ１１６、インスタンスデータ１１８、およびルールデータ１２０として格納される。一実施形態では、処理ユニット１０４は、ウェブオントロジ言語（ＯＷＬ）を使用して、クラス記述１１４、プロパティ１１６（ｔ−ボックス）、および特定の状況を記述するインスタンスデータ１１８（ａ−ボックス）を含む一般的領域概念に対応するセマンティック知識を定義する。
【００１６】
具体的には、一実施形態では、セマンティック概念は、数学的有向グラフとして表され、クラス記述１１４およびインスタンスデータ１１８はノードであり、プロパティ１１６は有向グラフのエッジである。数学的有向グラフ表現は、セマンティックメタモデル全体を知る必要なしにインスタンスデータ１１８からのセマンティック概念の解釈を容易にするやり方で情報のファクト指向表現および交換を可能にする。そのために、数学的有向グラフは、ファクトを、例えば「Ｓｕｂｊｅｃｔ−Ｒｅｌａｔｉｏｎ  Ｔｙｐｅ−Ｏｂｊｅｃｔ（サブジェクト−関係タイプ−オブジェクト）」フォームでの１つまたは複数の二項関係として表す「ステートメント」または「トリプル」を含む。特定のセマンティック概念を、例えば、トリプル「Ｅｉｆｆｅｌ  Ｔｏｗｅｒ＜ｉｓ  ｌｏｃａｔｅｄ  ｉｎ＞Ｐａｒｉｓ（エッフェル塔はパリにある）」として表すことができる。
【００１７】
したがって、一実施形態では、推論ユニット１１０は、クラス記述１１４、プロパティ１１６、およびルールデータ１２０を使用して関連概念を判定し、一方、コードジェネレータ１１２は、判定された推論を使用して、クラス記述１１４、プロパティ１１６、インスタンス１１８、およびルールデータ１２０をＪａｖａ（商標）コードに変換する。具体的には、コードジェネレータ１１２は、領域クラスを表すクラス記述１１４を対応するＪａｖａ（商標）クラスに変換する。さらに、コードジェネレータ１１２は、その領域として特定のクラス記述１１４を有するプロパティ１１６のそれぞれを、対応するｇｅｔ関数およびｓｅｔ関数を用いて特定の領域クラスから変換されたＪａｖａ（商標）クラス内のフィールドに変換する。
【００１８】
さらに、いくつかのシナリオでは、特定の領域クラスに関連付けられたセマンティックプロパティは、関数でもよく、または、プロパティを範囲クラスまたはｘｓｄタイプの単一のインスタンスに限定する基数もしくは最大基数制約を有してもよい。そのようなシナリオでは、セマンティックプロパティに対応するフィールドのｇｅｔ関数は、その範囲クラスまたはｘｓｄタイプを返す。しかし、セマンティックプロパティの範囲が制限されていない場合は、ｇｅｔ関数は、範囲クラスまたはｘｓｄタイプのインスタンスの集合を返す。さらに、コードジェネレータ１１２は、ＯＷＬ名前空間をＪａｖａ（商標）パッケージに変換し、したがって、複数の名前空間に現れる同一の名前の問題を無矛盾に処理し続ける。
【００１９】
したがって、セマンティックモデルを手続き型コードにかなり容易に変換することができる。しかし、セマンティックルールはいかなる特定の概念にも直接関連付けられないが、セマンティックルールはセマンティック概念を使用し、したがって、技術スタック内の個別のブロックにおいて実施される。具体的には、セマンティックルールは複雑なので、セマンティックルールを独自に実施すると、セマンティックルールをＪａｖａ（商標）コードに変換するのは難しくなる。セマンティックルールの従来のＡＰＩ実装は、システム１００が様々な種類の検証および試験を必要とする場合は、およびアプリケーション１０２がルールエンジンの使用を許可しない場合は、しばしば不適切である。したがって、コードジェネレータ１１２は、本技法の諸態様による特定の方法を利用して、セマンティックルールを対応するＪａｖａ（商標）コードに変換する。コードジェネレータ１１２がセマンティックモデルおよびルールを手続き型コードに効率よく変換することができるようにするいくつかの例示的方法を図２〜３に関連してより詳細に説明する。
【００２０】
図２および３は、それぞれ、セマンティックモデルおよびルールからコードを生成するための例示的方法を示す流れ図２００および３００を例示する。例示的方法は、コンピューティングシステムまたはプロセッサ上のコンピュータ実行可能命令の一般的なコンテキストで説明されることが可能である。一般に、コンピュータ実行可能命令は、特定の関数を実行する、または特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、関数などを含んでよい。例示的方法はまた、最適化関数が通信ネットワークを介してリンクされているリモート処理デバイスによって実行される分散コンピューティング環境で実施されることが可能である。具体的には、分散コンピューティング環境では、コンピュータ実行可能命令は、メモリストレージデバイスを含めて、ローカルおよびリモート両方のコンピュータ記憶媒体に配置されていてもよい。
【００２１】
さらに、図２および３では、例示的方法が、ハードウェア、ソフトウェア、またはそれらの組合せで実行することができる動作を表す論理流れ図におけるアイテムの集りとして例示されている。ソフトウェアのコンテキストでは、ブロックは、１つまたは複数の処理サブシステムによって実行される場合、記載された動作を行うコンピュータ命令を表す。例示的方法が記載されている順序は、限定と解釈されることを意図するものではなく、本明細書で開示された例示的方法または同等の代替方法を実施するために任意の数の記載されたブロックを任意の順序で組み合わせることができる。さらに、本明細書に記載の主題の趣旨および範囲から逸脱することなくいくつかのブロックを例示的方法に追加しても例示的方法から削除してもよい。議論のために、例示的方法は、図１の実施形態に関連して説明される。
【００２２】
具体的には、図２は、セマンティックモデルおよび対応するルールを手続き型コードに変換するための方法を例示する。明確にするために、本実施形態は、それぞれＯＷＬおよびＪｅｎａルールに定義されているオントロジおよびセマンティックルールのＪａｖａ（商標）への変換に関連して方法を説明する。しかし、セマンティックモデルおよびルールの、セマンティックアプリケーション設計言語（ＳＡＤＬ）およびルール交換フォーマット（ＲＩＦ）などの別のオントロジ言語から別のオブジェクト指向言語への変換も同様に実現することができることが理解されよう。
【００２３】
したがって、２０２は、ＯＷＬで定義されている１つまたは複数のセマンティッククラスをＪａｖａ（商標）などの所望の手続き型言語のクラスに変換することを示す。具体的には、特定の領域概念を表す１つまたは複数のセマンティッククラスが、対応するＪａｖａ（商標）クラスに変換される。さらに、２０４は、１つまたは複数のプロパティ内の各プロパティを、所望の手続き型言語の対応するｇｅｔ関数およびｓｅｔ関数によってそのプロパティの領域を形成するセマンティッククラスから変換された手続き型クラス内の対応するフィールドに変換することに対応する。さらに、上記のように、特定の領域クラスに対応するセマンティックプロパティは関数でもよく、または、プロパティを範囲クラスまたはｘｓｄタイプの単一のインスタンスに限定する基数もしくは最大基数制約を有してもよい。そのようなシナリオでは、セマンティックプロパティに対応するフィールドのｇｅｔ関数は、その範囲クラスまたはｘｓｄタイプを返す。しかし、セマンティックプロパティの範囲が制限されていない場合は、ｇｅｔ関数は、範囲クラスまたはｘｓｄタイプのインスタンスの集合を返す。さらに、１つまたは複数のＯＷＬ名前空間を対応するＪａｖａ（商標）パッケージに変換することも可能であり、したがって、複数の名前空間に現れる同一の名前の問題を無矛盾に処理し続ける。
【００２４】
さらに、２０６において、セマンティッククラスに対応するインスタンスが、対応する手続き型クラスのインスタンスに変換される。次に、２０８は、ルール前提および／または結論に基づいてルールの範囲を識別することにより、セマンティックルールを関連付けられた手続き型クラスのメソッドに変換することに関する。セマンティックルールを関連付けられたＪａｖａ（商標）クラス内のメソッドに変換するための例示的方法を図３に関連してより詳細に説明する。
【００２５】
図３は、セマンティックルールをＪａｖａ（商標）などのオブジェクト指向言語のプログラムコードに変換するための例示的方法を示す流れ図３００を例示する。具体的には、流れ図３００は、図２のステップ２０８をより詳細に説明する。したがって、図３に示されている例示的方法は、図２の方法の続きを表す。しかし、図３に示されている例示的方法は、セマンティックルールを所望の手続き型言語のプログラミングコードに変換するために独立して実施されてもよい。
【００２６】
通常、セマンティックルールは２つの部分、つまり前提および結論を含む。セマンティックルール前提またはルールボディは、ルールが「発火される」またはルールの結論が引き出されるようにマッチされなければならない有向グラフパターンを表す。結論またはルールヘッドは、ルールボディにおけるパターンにマッチするサブグラフごとに実現されるべき有向グラフにおけるノードまたはエッジの挿入などの１つまたは複数の結果を識別する。そのために、ルールの有向グラフパターンにおけるノードまたはエッジは、ルールの様々な要素を縛り合わせるために使用することができる「非束縛」変数を含む。本明細書では、非束縛変数は、その値が明示的に知られていないが、有向グラフパターンを満たす１つまたは複数のバインディングを見つけるために有向グラフに対してマッチされることが可能である変数に対応する。
【００２７】
例として、ルール前提がステートメント「ｘ＝２＊３」を含む場合は、「ｘ」は値「６」にバインドされる。しかし、ルール前提がステートメント「ｘは円である」を含む場合は、ｘは非束縛変数であり、通常、定義された条件を満たす有向グラフ内のｘのすべての値を見つけることはルールエンジンのタスクである。同様に、ルール前提がより制約されたステートメント、例えば、「ｘは円であり、ｘは半径ｙを有し、ｙ＜３」を含む場合は、ルールエンジンは、ｘを見つけてそのｘを３より小さい半径を有するクラス円のすべてのインスタンスにバインドし、一方、「ｙ」を対応する半径にバインドするように構成される。したがって、ルールは、ルール前提ステートメントのすべてを満たす変数のすべてのそれらのバインディングのために発火する。
【００２８】
さらに、いくつかのルールエンジンは、ルール前提および／または結論におけるファンクタまたは「ビルトイン」の使用をサポートし、ファンクタは、特定の実施シナリオに基づいてバインディングを追加し、成功するかもしくは失敗するか（前提）、または副作用（結論）を生じさせる可能性がある手続き型コードのスニペットを含む。具体的には、本実施形態は、セマンティックルールの結論に少なくとも１つのトリプルまたはステートメントが存在する場合に、前提または結論にファンクタを有するルールに関連して例示的方法を説明する。具体的には、セマンティックルールにおけるファンクタは、所望の手続き型言語のファンクタを含み、本明細書で説明される例示的ルール変換方法によって生成された手続き型コードからファンクタを呼び出すことにより変換される。議論のために、図３に示されている例示的方法は、セマンティッククラスおよびルールの以下の例を使用して説明される。
セマンティッククラスの説明
Ｓｈａｐｅ２Ｄは、クラスであり、
十進法タイプの単一の値を有する面積（ａｒｅａ）によって記述される。        （１）
円（Ｃｉｒｃｌｅ）はＳｈａｐｅ２Ｄのタイプであり、
十進法タイプの単一の値を有する半径（ｒａｄｉｕｓ）によって記述される。    （２）
ルール  円の面積（ＡｒｅａＯｆＣｉｒｃｌｅ）
ｘが円であるとすると、
ｘの面積は、ｘ＾２の半径＊ＰＩである。                                    （３）
ＭｙＣｉｒｃｌｅは円であり、半径１．０を有する。                          （４）
長方形（Ｒｅｃｔａｎｇｌｅ）は、Ｓｈａｐｅ２Ｄのタイプであり、
十進法タイプの単一の値を有する高さ（ｈｅｉｇｈｔ）によって記述され、
十進法タイプの単一の値を有する幅（ｗｉｄｔｈ）によって記述される。        （５）
ルール  長方形の面積（ＡｒｅａＯｆＲｅｃｔａｎｇｌｅ）
ｘが長方形であるとすると、
ｘの面積は、ｘの高さ＊ｘの幅である。                                      （６）
ＭｙＲｅｃｔは長方形であり、高さ２．０を有し、幅３．０を有する。          （７）
ここでは、セマンティックモデルおよびルールは、セマンティックアプリケーション設計言語（ＳＡＤＬ）表現で示される。ＳＡＤＬは、オープンソース、ＯＷＬおよびＪｅｎａルールに直接変換することができる制御英語表現である。さらに、Ｊｅｎａは、Ｊａｖａ（商標）のためのオープンソースセマンティックウェブフレームワークである。具体的には、Ｊｅｎａは、例えば、セマンティックモデルを表すリソース記述フォーマット（ＲＤＦ）グラフからデータを抽出し、それにデータを書き込むためにＡＰＩを提供する。しかし、本明細書に示されている実施例では、現在のモデルにおける概念の名前空間は、読みやすくするために省略されることが留意されよう。
Ｊｅｎａルール表現
［ＡｒｅａＯｆＣｉｒｃｌｅ：（？ｘ  ｒｄｆ：タイプ円）、（？ｘ半径？ｖ１）、ｐｏｗ（？ｖ１，２，？ｖ２）、積（？ｖ２，３．１４１５９２６５３５８９７９３，？ｖ３）
−＞（？ｘ面積？ｖ３）］。                                                （８）
［ＡｒｅａＯｆＲｅｃｔａｎｇｌｅ：（？ｘ  ｒｄｆ：タイプ長方形）、（？ｘ高さ？ｖ１）、（？ｘ幅？ｖ２）、積（？ｖ１，？ｖ２，？ｖ３）
−＞（？ｘ面積？ｖ３）］                                                  （９）
したがって、３０２において、ＪｅｎａルールをＪａｖａ（商標）コードに変換するために、ルール結論内の１つまたは複数の要素を評価して、ルールによって何の情報が計算されるかを判定する。通常、ルール結論の要素は、ルール前提が満たされ、ルールが「発火する」場合にセマンティックモデルに追加された情報を定義する１つまたは複数の「ノード−＞エッジ−＞ノード」トリプルとして表される。例として、本明細書に例示された２つのＪｅｎａルール（８）および（９）の結論を評価するとすぐ、結論は、単一のトリプル、「？ｘ面積？ｖ３」を含むことが判定され、セマンティックルールは「面積」の値の計算に関することを示す。
【００２９】
さらに、３０４において、セマンティックルール結論内の要素ごとに、セマンティックルール結論内のトリプルのそれぞれ内の１つまたは複数の変数が識別される。具体的には、識別された変数はまた、ルール前提の要素内に存在しているはずであり、ルールエンジンが、変数の値がどのように計算されるか、セマンティックルールの代わりに生成された手続き型コードがどこに組み込まれるかなどの情報を推論することができるようにする。２つのＪｅｎａルール（８）および（９）では、例えば、「ｘ」および「ｖ３」は変数と判定される。
【００３０】
さらに、３０６において、セマンティックルール結論内の要素ごとに各トリプルのプロパティが判定される。具体的には、各トリプルのプロパティを使用して、セマンティックルールの代わりに生成された手続き型コードが組み込まれる手続き型関数を識別する。例として、Ｊｅｎａルール（８）および（９）では、「面積」は、プロパティであると判定され、したがって、ｇｅｔＡｒｅａ（）関数は、Ｊｅｎａルール（８）および（９）の代わりに生成されたＪａｖａ（商標）コードを含むと識別される。
【００３１】
３０８において、１つまたは複数のサブジェクト変数をバインドするセマンティックルール前提内の１つまたは複数の要素が識別される。ここで、サブジェクト変数のそれぞれは、セマンティックルール結論内のトリプルの少なくとも１つのサブジェクト（第１のノード）に対応する。例えば、円の面積ルールに対応するルール（８）では、「ｘ」は、トリプルのサブジェクト「ｘは円である」と識別される。同様に、長方形の面積ルールに対応するルール（９）では、「ｘ」は、トリプルのサブジェクト「ｘは長方形である」と識別される。
【００３２】
さらに、３１０において、識別されたサブジェクト変数を含むセマンティックルール前提内のトリプルが「タイプ」ステートメントであるかどうかが判定される。さらに、３１２において、識別されたサブジェクト変数を含むが「タイプ」ステートメントではないセマンティックルール前提内の各トリプルのプロパティ内の領域が判定される。
【００３３】
したがって、３１４において、手続き型関数が、「タイプ」ステートメントであると判定された前提トリプルによって識別されたクラスの交差から得られた最小制限セマンティッククラスから変換された１つまたは複数の手続き型クラスの中に組み込まれる。例として、ルール（８）におけるトリプル「（？ｘｒｄｆ：タイプ円）」はタイプステートメントに対応するので、ｇｅｔＡｒｅａ（）関数は、トリプルに現れるセマンティッククラス「円」から変換されたＪａｖａ（商標）クラスに含まれる。同様に、ルール（９）では、ｇｅｔＡｒｅａ（）関数は、対応するトリプル「？ｘ  ｒｄｆ：タイプ長方形」に現れるセマンティッククラス「長方形」から変換されたＪａｖａ（商標）クラスに含まれる。
【００３４】
しかし、いくつかの実施形態では、手続き型関数は、代替としてまたは追加として、他のいくつかの手続き型クラスの中に組み込まれる。これらの手続き型クラスは、識別されたサブジェクト変数を含むが「タイプ」ステートメントではないセマンティックルール前提および／または結論内の各トリプルのプロパティの領域と識別されたクラスの交差から得られた最小制限セマンティッククラスから変換される。
【００３５】
例として、「円」はプロパティ「半径」の領域なので、ルール（８）のためのトリプル「？ｘ半径？ｖ１」の要素は、「ｘ」のクラスを「円」と識別する。ルール（９）では、トリプル「？ｘ高さ？ｖ１」および「？ｘ幅？ｖ２」は両方とも、「長方形」は「高さ」および「幅」両方の領域なので、「長方形」は「ｇｅｔＡｒｅａ（）」ｇｅｔ関数を置くべきクラスであることを示す。したがって、本技法では、２つ以上のクラスがルール結論内のサブジェクト変数のタイプと識別された場合は、ｇｅｔ関数が、識別されたクラスのそれぞれに関連付けられる。
【００３６】
３１６において、セマンティックルール結論内のトリプル内の１つまたは複数のオブジェクト変数の値を計算するセマンティックルール前提内の１つまたは複数の要素に基づいてセマンティックルールによって行われた計算が判定される。具体的には、オブジェクト変数に対応するセマンティックルール前提要素は、識別された手続き型クラスに組み込まれたｇｅｔ関数によって返されるべき１つまたは複数の値を計算するための情報を提供する。
【００３７】
したがって、３１８において、手続き型関数が、関連付けられた手続き型クラス内の判定された計算の代わりに生成された手続き型コードで更新される。例として、ルール（８）において、オブジェクト変数「ｖ１」、「ｖ２」、および「ｖ３」を含むトリプル「ｐｏｗ（？ｖ１，２，？ｖ２）」、「積（？ｖ２，３．１４１５９２６５３５８９７９３，？ｖ３）」、および「（？ｘ面積？ｖ３）」は、Ｊａｖａ（商標）クラス「円」のｇｅｔＡｒｅａ（）関数に含まれるべき計算を表す。したがって、更新されたｇｅｔＡｒｅａ（）関数は、変換されたオブジェクト指向アプリケーションにおける手続き型コードコールに応答して「ｖ３」の値を計算された面積として返す。
【００３８】
いくつかの実施形態では、ルール前提の要素によって定義された有向グラフパターンは、本明細書に示されている実施例におけるものより複雑でもよい。そのようなシナリオでは、変数のバインディングを、セマンティックモデルを表す有向グラフの１つまたは複数のエッジを横切ることにより得ることができる。より具体的には、変換されたＪａｖａ（商標）クラス内のｇｅｔ関数を使用して、変換されたインスタンスデータ内の有向グラフを横切って可変バインディングを得ることができる。したがって、本技法は、セマンティックモデルおよびルールのＪａｖａ（商標）コードへの事実上完全な変換を可能にして、利用可能なセマンティック情報の発見、使用、および処理を容易にする。
【００３９】
本技法を使用してＪｅｎａルール表現において例示されているルール（８）および（９）から生成されたメソッドの例示的Ｊａｖａ（商標）コード表現の少なくとも一部が本明細書で例示される。
セマンティックモデルおよびルールから生成されたＪａｖａ（商標）コード表現
ｐｕｂｌｉｃ  ｃｌａｓｓ  Ｃｉｒｃｌｅ  ｅｘｔｅｎｄｓ  Ｓｈａｐｅ  ｛
ｐｒｉｖａｔｅ  ｆｌｏａｔ  ｒａｄｉｕｓ；
ｐｕｂｌｉｃ  ｖｏｉｄ  ｓｅｔＲａｄｉｕｓ（ｆｌｏａｔ  ＿ｒａｄｉｕｓ）  ｛
ｒａｄｉｕｓ＝＿ｒａｄｉｕｓ；
｝
ｐｕｂｌｉｃ  ｆｌｏａｔ  ｇｅｔＲａｄｉｕｓ（）  ｛
ｒｅｔｕｒｎ  ｒａｄｉｕｓ；
｝
ｐｕｂｌｉｃ  ｆｌｏａｔ  ｇｅｔＡｒｅａ（）  ｛  ／／Ｓｈａｐｅクラスにおいて単一のゲッタをオーバーライドする；
／／ルール円の面積を実装する
ｒｅｔｕｒｎ  （ｇｅｔＲａｄｉｕｓ（）＾２＊３．１４１５９）；
｝
｝                                                                      （１０）
ｐｕｂｌｉｃ  ｃｌａｓｓ  Ｒｅｃｔａｎｇｌｅ  ｅｘｔｅｎｄｓ  Ｓｈａｐｅ  ｛
ｐｒｉｖａｔｅ  ｆｌｏａｔ  ｈｅｉｇｈｔ；
ｐｒｉｖａｔｅ  ｆｌｏａｔ  ｗｉｄｔｈ；
ｐｕｂｌｉｃ  ｖｏｉｄ  ｓｅｔＨｅｉｇｈｔ（ｆｌｏａｔ  ＿ｈｅｉｇｈｔ）  ｛
ｈｅｉｇｈｔ＝＿ｈｅｉｇｈｔ；
｝
ｐｕｂｌｉｃ  ｆｌｏａｔ  ｇｅｔＨｅｉｇｈｔ（）  ｛
ｒｅｔｕｒｎ  ｈｅｉｇｈｔ；
｝
ｐｕｂｌｉｃ  ｖｏｉｄ  ｓｅｔＷｉｄｔｈ（ｆｌｏａｔ  ＿ｗｉｄｔｈ）  ｛
ｗｉｄｔｈ＝＿ｗｉｄｔｈ；
｝
ｐｕｂｌｉｃ  ｆｌｏａｔ  ｇｅｔＷｉｄｔｈ（）  ｛
ｒｅｔｕｒｎ  ｗｉｄｔｈ；
｝
ｐｕｂｌｉｃ  ｆｌｏａｔ  ｇｅｔＡｒｅａ（）  ｛  ／／Ｓｈａｐｅクラスにおいて単一のゲッタをオーバーライドする；
／／ルール長方形の面積を実装する
ｒｅｔｕｒｎ  （ｇｅｔＨｅｉｇｈｔ（）＊ｇｅｔＷｉｄｔｈ（））；
｝
｝                                                                      （１１）
したがって、上記で説明されたシステムおよび方法は、セマンティックモデルばかりでなくセマンティックルールをも手続き型コードに変換するための効率のよい技法を提供する。（１０）および（１１）に示されているＪａｖａ（商標）コードは、例えば、本明細書に例示されているＪｅｎａルール（８）および（９）によって行われる処理を実施するｇｅｔＡｒｅａ（）関数を例示する。具体的には、開示された技法は、ワーキングアプリケーションとしてのモデルの配信が配信されたアプリケーション内のルールエンジンの使用を許可しないシナリオにおいて使用するためのオブジェクト指向アプリケーションの生成を可能にする。さらに、ルールを有するセマンティックモデルをＪａｖａ（商標）などの手続き型言語に変換することによって、アプリケーションを様々な種類の従来の検証および試験のために容易に使用することができる機械実行可能なものに変えることができるようになり、その結果、捕捉された情報の使用が容易になる。さらに、変換されたＪａｖａ（商標）アプリケーションによって、例えば、実行時間がより速くなり、システム検証がより容易になり、メモリ必要量が低減され、したがって、システム性能全体が向上する。
【００４０】
本技法の例示的実施形態は、ＯＷＬのセマンティックモデルおよびルールのＪａｖａ（商標）のプログラミングコードへの変換に関連して説明されるが、開示された技法を他の適切なオブジェクト指向プログラミング言語によって使用することも企図される。
【００４１】
さらに、推論ユニット１１０およびコードジェネレータ１１２によって行うことができるものなどの上記の実施例、実例、およびプロセスステップは、汎用または専用コンピュータなどのプロセッサベースのシステム上で適切なコードによって実行されてもよい。本技法の様々な実施形態が、本明細書で説明されたステップの一部またはすべてを、異なる順序で、または事実上同時に、すなわち平行して、実行することができることにも留意されたい。さらに、関数を、Ｐｙｔｈｏｎ、Ｃ＋＋、またはＪａｖａ（商標）を含むがそれらに限定されない様々なプログラミング言語で実行することができる。そのようなコードは、格納されたデータを実行するためにプロセッサベースのシステムによってアクセスされ得るデータリポジトリチップ、ローカルもしくはリモートハードディスク、光ディスク（すなわち、ＣＤもしくはＤＶＤ）、または他の媒体など、１つまたは複数の有形の機械可読媒体上に格納されるかまたは格納されるように構成されることが可能である。
【００４２】
本明細書では本発明のいくつかの特徴だけが例示され説明されてきたが、多くの修正および変更が当業者には思いつかれるであろう。したがって、添付の特許請求の範囲は、本発明の真の趣旨の範囲に入るそのようなすべての修正および変更をカバーすることを意図するものであることを理解されたい。
【符号の説明】
【００４３】
１００  コード生成システム
１０２  実行可能なアプリケーション
１０４  処理ユニット
１０６  入力／出力デバイス
１０８  データリポジトリ
１１０  推論ユニット
１１２  コードジェネレータ
１１４  セマンティッククラス記述
１１６  プロパティ
１１８  インスタンスデータ
１２０  ルールデータ
【図１】
2012234536.tif 000003
【図２】
2012234536.tif 000004
【図３】
2012234536.tif 000005
【外国語明細書】
2012234536000001.pdf