(57)【要約】  データベースからデータを取得する問合せ命令（２０１）であって、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む問合せ命令（２０１）を受け付ける命令受付部（１１０）と、値定義範囲と、データベースからデータを取得する取得方法とが対応付けられた取得定義情報（１６１）を記憶する取得定義記憶部（１６０）と、値指定範囲に値定義範囲と重なる範囲があるか否かを判定し、重なる範囲があると判定した場合に重なる範囲に含まれる定義値に対応するデータを値定義範囲に対応する取得方法で取得するデータ取得命令（２０２）を生成する命令生成部（１２０）とを備える。
2017009886.tif 000002
【特許請求の範囲】
【請求項１】
定義値に対応付けられたデータを格納するデータベースからデータを取得する問合せ命令であって、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む問合せ命令を受け付ける命令受付部と、
定義値の範囲を定義した値定義範囲と、前記データベースからデータを取得する取得方法とが対応付けられた取得定義情報を記憶する取得定義記憶部と、
前記問合せ命令と前記取得定義情報とを用いて、前記値指定範囲に前記値定義範囲と重なる範囲があるか否かを判定し、前記重なる範囲があると判定した場合に、前記重なる範囲に含まれる定義値に対応するデータを前記値定義範囲に対応する取得方法で取得するデータ取得命令を生成する命令生成部とを備えるデータ取得装置。
【請求項２】
前記取得定義記憶部は、
前記値定義範囲として複数の値定義範囲を含むと共に、前記複数の値定義範囲の各値定義範囲に前記取得方法が対応付けられた前記取得定義情報を記憶し、
前記命令生成部は、
前記値指定範囲に前記複数の値定義範囲の各値定義範囲と重なる範囲があるか否かを判定し、前記重なる範囲があると判定した場合に、前記重なる範囲に含まれる定義値に対応するデータを前記複数の値定義範囲の各値定義範囲に対応する取得方法で取得する前記データ取得命令を生成する請求項１に記載のデータ取得装置。
【請求項３】
前記データ取得装置は、
前記命令生成部により生成された前記データ取得命令を用いて前記データベースからデータを取得するデータ取得部を備える請求項２に記載のデータ取得装置。
【請求項４】
前記命令生成部は、
前記値指定範囲に前記複数の値定義範囲のいずれの値定義範囲とも重ならない範囲があると判定した場合には、前記重ならない範囲に含まれる定義値に対応するデータとしてデフォルト値を取得する命令を前記データ取得命令に含める請求項２または３に記載のデータ取得装置。
【請求項５】
前記データ取得装置は、
前記重ならない範囲に含まれる定義値に対応するデータとして取得されるデフォルト値を含む未定義情報を記憶する未定義情報記憶部を備える請求項４に記載のデータ取得装置。
【請求項６】
前記データ取得装置は、
前記複数の値定義範囲の各値定義範囲と前記複数の値定義範囲の各値定義範囲に対応する前記取得方法とを、前記取得定義情報に登録する取得定義登録部を備える請求項２から５のいずれか１項に記載のデータ取得装置。
【請求項７】
前記取得定義登録部は、
前記複数の値定義範囲の各値定義範囲が他の値定義範囲と重複しないように前記複数の値定義範囲の各値定義範囲を登録する請求項６に記載のデータ取得装置。
【請求項８】
前記取得定義登録部は、
前記複数の値定義範囲の各値定義範囲が他の値定義範囲と重複する場合、前記複数の値定義範囲の各値定義範囲が他の値定義範囲と重複しないように、前記複数の値定義範囲の各値定義範囲あるいは前記他の値定義範囲を短縮する請求項７に記載のデータ取得装置。
【請求項９】
前記命令生成部は、
前記問合せ命令を書き換えることにより前記データ取得命令を生成する請求項１から７のいずれか１項に記載のデータ取得装置。
【請求項１０】
前記定義値は、日時である請求項１から８のいずれか１項に記載のデータ取得装置。
【請求項１１】
前記定義値は、複数の条件から定められる請求項１から８のいずれか１項に記載のデータ取得装置。
【請求項１２】
命令受付部が、定義値に対応付けられたデータを格納するデータベースからデータを取得する問合せ命令であって、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む問合せ命令を受け付け、
命令生成部が、定義値の範囲を定義した値定義範囲と、前記データベースからデータを取得する取得方法とが対応付けられた取得定義情報と前記問合せ命令とを用いて、前記値指定範囲に前記値定義範囲と重なる範囲があるか否かを判定し、前記重なる範囲があると判定した場合に、前記重なる範囲に含まれる定義値に対応するデータを前記値定義範囲に対応する取得方法で取得するデータ取得命令を生成するデータ取得方法。
【請求項１３】
定義値に対応付けられたデータを格納するデータベースからデータを取得する問合せ命令であって、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む問合せ命令を受け付ける命令受付処理と、
定義値の範囲を定義した値定義範囲と、前記データベースからデータを取得する取得方法とが対応付けられた取得定義情報と前記問合せ命令とを用いて、前記値指定範囲に前記値定義範囲と重なる範囲があるか否かを判定し、前記重なる範囲があると判定した場合に、前記重なる範囲に含まれる定義値に対応するデータを前記値定義範囲に対応する取得方法で取得するデータ取得命令を生成する命令生成処理とをコンピュータに実行させるデータ取得プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ取得装置、データ取得方法及びデータ取得プログラムに関する。
【背景技術】
【０００２】
データベースに格納されているデータは、そのデータの定義区間ごとにデータの取得方法の変更が必要となる場合がある。様々なセンサ機器のデータを格納するデータベースからデータを取得する場合、センサ機器の更新などが行われていると、データが作成された時期に応じてデータを補正してから取得する必要がある。
特許文献１には、データベース言語再発行装置を使用して、データを利用するアプリケーションがデータベースに対して発行するデータ取得命令を、データベースに送る前に書き換えることで、データ取得定義を変更する技術が開示されている。
また、特許文献２には、データの定義について変更が必要となる場合に、あらかじめデータの定義を更新することで、外部からデータを参照する場合に整合性を保つ技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２３１１１６号公報
【特許文献２】特開２００４−２２０３９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている方法では、一度に取得できるデータは１つの定義区間にとどまる。そのため、複数の区間に跨るデータを取得するような場合、データの定義区間と同じ数のデータ取得命令をデータベースに送る必要がある。よって、処理性能が劣化するという課題があった。
また、特許文献２に記載されている方法では、事前に参照用にデータを作成しておく必要があるため、データ取得定義を柔軟に変更することが難しいという課題があった。【０００５】
本発明は、複数の定義区間に跨るデータの取得において、問合せ命令を書き換えることにより一回の問合せ命令でデータを取得し、定義変更に対する柔軟性を確保しつつ性能の劣化を抑えることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るデータ取得装置は、
定義値に対応付けられたデータを格納するデータベースからデータを取得する問合せ命令であって、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む問合せ命令を受け付ける命令受付部と、
定義値の範囲を定義した値定義範囲と、前記データベースからデータを取得する取得方法とが対応付けられた取得定義情報を記憶する取得定義記憶部と、
前記問合せ命令と前記取得定義情報とを用いて、前記値指定範囲に前記値定義範囲と重なる範囲があるか否かを判定し、前記重なる範囲があると判定した場合に、前記重なる範囲に含まれる定義値に対応するデータを前記値定義範囲に対応する取得方法で取得するデータ取得命令を生成する命令生成部とを備える。
【発明の効果】
【０００７】
本発明に係るデータ取得装置によれば、データの定義値の範囲を定義した値定義範囲とデータベースからデータを取得する取得方法とが対応付けられた取得定義情報を記憶する取得定義記憶部と、問合せ命令と取得定義情報とを用いて、値指定範囲と値定義範囲とが重なる範囲に含まれる定義値に対応するデータを値定義範囲に対応する取得方法で取得するデータ取得命令を生成する命令生成部とを備えるので、複数の値定義範囲に跨るデータの取得において、１つのデータ取得命令でデータを取得することができ、定義変更に対する柔軟性を確保しつつ性能の劣化を抑えることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るデータ取得装置の利用方法を示すシステム構成図。
【図２】実施の形態１に係るデータ取得装置のブロック構成図。
【図３】実施の形態１に係るデータ取得装置のデータ取得方法、データ取得処理を示すフロー図。
【図４】実施の形態１に係るデータベースの例を示す図。
【図５】実施の形態１に係る定義軸定義情報の例を示す図。
【図６】実施の形態１に係る取得定義情報の例を示す図。
【図７】実施の形態１に係る未定義情報の例を示す図。
【図８】実施の形態１に係るデータ取得装置のデータ取得処理の動作の具体例を示す図。
【図９】実施の形態１に係るアプリケーション実行装置とデータ取得装置とデータベースとの構成の一例を示す図。
【図１０】実施の形態１に係るアプリケーション実行装置とデータ取得装置とデータベースとの構成の他の例を示す図。
【図１１】実施の形態２に係るデータ取得装置のブロック構成図。
【図１２】実施の形態２に係る取得定義登録部の取得定義登録処理の動作を示すフロー図。
【図１３】実施の形態３に係るデータ取得装置のブロック構成図。
【図１４】実施の形態３に係る命令生成部の命令生成処理を示すフロー図。
【図１５】実施の形態３に係るデータ取得装置のデータ取得処理の動作の具体例を示す図。
【図１６】データ取得装置のハードウェア構成図。
【発明を実施するための形態】
【０００９】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るデータ取得装置１００の利用方法を示すシステム構成図である。
本実施の形態に係るデータ取得装置１００は、アプリケーション実行装置２００とデータベース３００とに接続される。データ取得装置１００は、アプリケーション実行装置２００とデータベース３００との間に配置される。
アプリケーション実行装置２００は、データ取得装置１００を利用してデータベース３００からデータを取得する。アプリケーション実行装置２００は、データベース３００から取得したデータを利用して処理を行うアプリケーションプログラムを実行する。
データベース３００は、アプリケーション実行装置２００が利用するデータを格納する。データベース３００は、データの定義に用いられる定義値に対応付けられたデータを格納する。データの定義に用いられる定義値とは、データに対応付けられた日時などの変数である。
データ取得装置１００は、アプリケーション実行装置２００からの問合せ命令に応じて、データベース３００からデータを取得する。
【００１０】
図２は、本実施の形態に係るデータ取得装置１００のブロック構成を示す図である。
データ取得装置１００は、命令受付部１１０、命令生成部１２０、データ取得部１３０、データ出力部１４０を備える。また、データ取得装置１００は、定義軸情報記憶部１５０、取得定義記憶部１６０、未定義情報記憶部１７０を備える。定義軸情報記憶部１５０は定義軸定義情報１５１を記憶する。取得定義記憶部１６０は取得定義情報１６１を記憶する。未定義情報記憶部１７０は未定義情報１７１を記憶する。
【００１１】
命令受付部１１０は、アプリケーション実行装置２００から出力された問合せ命令２０１を受け付け、命令生成部１２０に出力する。問合せ命令２０１は、データベース３００から、定義値の範囲を指定する値指定範囲に含まれる定義値に対応付けられたデータを取得する命令である。問合せ命令２０１には値指定範囲が含まれる。本実施の形態では、問合せ命令２０１には、日時の範囲を指定する値指定範囲が含まれる。命令受付部１１０は、データベース３００から、値指定範囲に含まれる日時に対応付けられたデータを取得する問合せ命令２０１を取得する。定義値は日時でなくてもよく、データに対応付けられた変数でありデータの定義に用いられる値であればよい。
【００１２】
定義軸定義情報１５１には、データの値定義範囲を決める定義値を示す変数名が記憶される。データの値定義範囲とは、データに対応する定義値の範囲であり、データの定義区間とも称される。本実施の形態では、定義軸定義情報１５１には、データの値定義範囲を決める定義値として日時が設定される。
【００１３】
取得定義記憶部１６０は、定義値の範囲を定義した値定義範囲と、データベース３００からデータを取得する取得方法とが対応付けられた取得定義情報１６１を記憶する。取得定義情報１６１は、値定義範囲を複数含むと共に、複数の値定義範囲の各値定義範囲にデータベース３００からデータを取得する取得方法が対応付けられている。
【００１４】
未定義情報記憶部１７０は、値指定範囲に複数の値定義範囲のいずれの値定義範囲とも重ならない範囲がある場合に、この重ならない範囲に含まれる定義値に対応するデータとして取得するデフォルト値を含む未定義情報１７１を記憶する。
【００１５】
命令生成部１２０は、問合せ命令２０１と取得定義情報１６１とを用いて、値指定範囲に値定義範囲と重なる範囲があるか否かを判定する。命令生成部１２０は、重なる範囲があると判定した場合に、重なる範囲に含まれる定義値に対応するデータを値定義範囲に対応する取得方法で取得するデータ取得命令２０２を生成する。命令生成部１２０は、問合せ命令２０１を書き換えることによりデータ取得命令を生成する命令変換部とも称される。命令生成部１２０は、問合せ命令２０１を、データの定義域、すなわち値定義範囲にしたがった取得方法でデータを取得するデータ取得命令２０２に変換する。
【００１６】
データ取得部１３０は、命令生成部１２０によって作成されたデータ取得命令２０２を用いて、データベース３００からデータを取得データ２０３として取得する。
データ出力部１４０は、データ取得部１３０により取得された取得データ２０３をアプリケーション実行装置２００に出力する。
【００１７】
＊＊＊動作の説明＊＊＊
図３は、本実施の形態に係るデータ取得装置１００のデータ取得方法、データ取得処理Ｓ１００を示すフロー図である。
【００１８】
＜命令受付処理Ｓ１１０＞
命令受付部１１０は、定義値に対応付けられたデータを格納するデータベース３００からデータを取得する問合せ命令２０１を受け付ける命令受付処理Ｓ１１０を実行する。
問合せ命令２０１は、取得するデータに対応する定義値の範囲を指定する値指定範囲を含む。問合せ命令２０１は、データ取得装置１００に対し、データベース３００から定義値が値指定範囲内のデータを取得することを指示する命令である。
本実施の形態では、データベース３００にＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）を使用し、問合せ命令２０１にＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を使用する。
命令受付部１１０は、アプリケーション実行装置２００から受け付けた問合せ命令２０１を命令生成部１２０に出力する。
【００１９】
ここで、命令受付処理Ｓ１１０について詳しく説明する。
まず、命令受付部１１０が待ち受け用のポートを開く。待ち受け用のポートは、具体的にはＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）などの通信ソケットである。なお、ＴＣＰよりも上位あるいは下位のレイヤーの通信方式を用いてもよい。また、アプリケーション実行装置２００とデータ取得装置１００とが同一のサーバにインストールされているような場合には、Ｗｉｎｄｏｗｓ（登録商標）サーバならばウィンドウメッセージ、Ｕｎｉｘ（登録商標）系のサーバであればパイプなどの内部通信を用いてもよい。
次に、命令受付部１１０は、アプリケーション実行装置２００との間で通信を行い、アプリケーション実行装置２００から命令受付部１１０にＳＱＬ命令が送信される。通信に使用するプロトコルに特に指定はないが、例えばＴｅｌｎｅｔのように平文でＳＱＬ命令を送信したり、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を使用してそのボディ部にＳＱＬ命令を格納したりすることなどが考えられる。また、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）のように決まったプロトコルと組み合わされたプロトコルを用いて、ＳＱＬ命令が暗号化されていてもよい。命令受付部１１０の処理としては、ＳＱＬ命令のパース処理を行い、命令の区切りとなるセミコロン（；）を探すことにより、１つのＳＱＬ命令を取得する。
命令受付部１１０は、このようにして取得したＳＱＬ命令、すなわち問合せ命令２０１を命令生成部１２０に渡す。
【００２０】
＜命令生成処理Ｓ１２０＞
命令生成部１２０は、取得定義情報１６１と問合せ命令２０１とを用いて、値指定範囲に値定義範囲と重なる範囲があるか否かを判定し、重なる範囲があると判定した場合に、重なる範囲に含まれる定義値に対応するデータを値定義範囲に対応する取得方法で取得するデータ取得命令２０２を生成する命令生成処理Ｓ１２０を実行する。
【００２１】
Ｓ１２０１において、命令生成部１２０は、問合せ命令２０１を解析し、書き換え対象の候補となる箇所を抽出する。問合せ命令２０１には、データベース３００を指定するテーブル名と、取得するデータを指定するための列名とが含まれる。列名は複数含まれていてもよい。命令生成部１２０は、問合せ命令２０１を解析し、テーブル名と列名とを抽出する。このとき、命令生成部１２０は、構文解析器などを使用して、問合せ命令２０１からテーブル名と列名とを抽出する。
【００２２】
Ｓ１２０２において、命令生成部１２０は、問合せ命令２０１の中に書き換えが必要な箇所があるか否かを判定する。命令生成部１２０は、Ｓ１２０１で抽出したテーブル名と列名とを用いて、定義軸定義情報１５１を検索する。命令生成部１２０は、列名が複数ある場合には、複数の列名のうちの１つの列名とテーブル名とを用いて、定義軸定義情報１５１を検索する。命令生成部１２０は、テーブル名と列名とが定義軸定義情報１５１にヒットした場合に、その列名を書き換えが必要な箇所であると判定する。
書き換えが必要な箇所があると判定された場合（Ｓ１２０２でＹＥＳ）、Ｓ１２０３に進む。
書き換えが必要な箇所がないと判定された場合（Ｓ１２０２でＮＯ）、Ｓ１２０５に進む。
【００２３】
Ｓ１２０３において、命令生成部１２０は、問合せ命令２０１の書き換えに必要な定義軸定義情報１５１、取得定義情報１６１、未定義情報１７１を取得する。
Ｓ１２０４において、命令生成部１２０は、取得した情報を使用して、問合せ命令２０１の書き換えを実行する。問合せ命令２０１を書き換える処理については、後で詳しく説明する。
【００２４】
Ｓ１２０５において、命令生成部１２０は、問合せ命令２０１をデータ取得命令２０２としてデータ取得部１３０に出力する。
命令生成部１２０は、Ｓ１２０２で問合せ命令２０１に書き換えが必要な箇所は無いと判定するまで、Ｓ１２０２からＳ１２０４の処理を繰り返し実行する。すなわち、命令生成部１２０は、問合せ命令２０１に含まれる全ての列名について書き換えの必要が無いと判定するまで、Ｓ１２０２からＳ１２０４の処理を繰り返し実行する。
【００２５】
図４は、本実施の形態に係るデータベース３００の例を示す図である。
図５は、本実施の形態に係る定義軸定義情報１５１の例を示す図である。
図６は、本実施の形態に係る取得定義情報１６１の例を示す図である。
図７は、本実施の形態に係る未定義情報１７１の例を示す図である。
図８は、本実施の形態に係る命令生成部１２０の命令変換処理Ｓ１２０の動作の具体例を示す図である。
図４から図８を用いて、命令変換処理Ｓ１２０の動作について具体的に説明する。
【００２６】
図４に示すように、データベース３００は電力テーブル３０１であるものとする。
電力テーブル３０１の行には、２階建ての建物の１日の消費電力量がデータとして格納される。電力テーブル３０１の列名は、日時、建物、１Ｆ、２Ｆである。日時には年／月／日の日時が設定される。建物には、建物全体の消費電力量が格納される。１Ｆには、建物の１階の消費電力量が格納される。同様に、２Ｆには、建物の２階の消費電力量が格納される。図４のデータベース３００では、２Ｆのデータは３行目の２０１４／４／２から格納されている。これは、２０１４／４／１に建物の２階に電力計が追加されたことで、２０１４／４／１から２Ｆにデータが設定され始めたことを意味する。
【００２７】
アプリケーション実行装置２００が、ある年月日の建物全体の１日の電力消費量を取得する場合は、問合せ命令２０１にテーブル名、日時、列名として建物を指定すれば、電力テーブル３０１における指定年月日の列名「建物」からデータを取得することができる。問合せ命令２０１に日時の指定がない場合は、全ての日時における列名のデータを取得する。建物の１階の電力消費量を取得する場合も同様に、問合せ命令２０１にテーブル名、日時、列名として１Ｆを指定すれば、電力テーブル３０１における指定年月日の列名「１Ｆ」からデータを取得することができる。
【００２８】
しかし、アプリケーション実行装置２００が、ある年月日の建物の２階の電力消費量を取得する場合は、データの日時による値定義範囲によりデータの取得方法が異なる。すなわち、２０１４／３／３０から２０１４／３／３１までの値定義範囲３００１と、２０１４／４／１から２０１４／４／３までの値定義範囲３００１とでは、２Ｆ列のデータの取得方法が異なる。
２０１４／３／３０から２０１４／３／３１までを値定義範囲３００１ａとし、２０１４／４／１から２０１４／４／３までを値定義範囲３００１ｂとする。値定義範囲３００１ａと値定義範囲３００１ａとでは、２Ｆ列のデータについての取得方法が異なる。このように取得方法が異なる定義値の値定義範囲３００１をデータの定義区間とも称する。
【００２９】
図５に示すように、定義軸定義情報１５１には、テーブル名と、定義区間を定義する対象のデータが格納されている列名と、値定義範囲の定義に用いられる定義値が設定される定義値列名とが設定される。図５の例では、定義軸定義情報１５１には、データの定義区間を決めるための変数として、データの計測時間を表す日時列を使用する。定義軸定義情報１５１には、テーブル名として電力、定義区間を定義する対象のデータの列名として２階電力、定義区間の定義に用いられる定義値の列名として日時が設定される。
【００３０】
図６に示すように、取得定義情報１６１には、値定義範囲３００１、すなわち定義区間ごとのデータの取得方法が定義される。
図６の１行目では、電力テーブル３０１における２階電力の定義区間（値定義範囲３００１ａ）「２０１３／４／０１から２０１４／４／０１まで」では、電力テーブル３０１の２階電力は「建物−１Ｆ」で取得されることが定義されている。また、図６の２行目では、電力テーブル３０１における２階電力の定義区間（値定義範囲３００１ｂ）「２０１４／４／０１から２０１５／４／０１まで」では、電力テーブルの２階電力は「２Ｆ」で取得されることが定義されている。つまり、図６の取得定義情報１６１では、２０１４／３／３１までは、２階の消費電力量を直接取得することができないため、建物全体の消費電力量から、１階の消費電力量を引くことで２階の消費電力量を取得すると定義される。また、２０１４／４／０１以降は、２Ｆ列にデータが直接格納されているので、その値を取得すると定義される。
【００３１】
図７の未定義情報１７１には、取得定義情報１６１で定義されていない定義区間のデータの取得が要求された場合に、取得が要求されたデータの値として返却するデフォルト値が設定される。
未定義情報１７１には、テーブル名、デフォルト値を設定する対象のデータの列名、デフォルト値が設定されている。図７では、テーブル名に電力、列名に２階電力、デフォルト値に０が設定されている。図７の未定義情報１７１は、電力テーブルにおける２階電力の「２０１３／４／０１から２０１４／４／０１まで」と「２０１４／４／０１から２０１５／４／０１まで」との２つの定義区間以外の定義区間が、問合せ命令２０１で指定された場合に２階電力として「０」を取得することを意味する。図６の取得定義情報１６１の例では、２０１３／４／１以前や、２０１５／４／１以降のデータの取得方法について定義していない。このような定義されていない定義区間に対して適用するものが、デフォルト値定義である。
【００３２】
次に、図８を用いてデータ取得装置１００の動作について詳しく説明する。
【００３３】
＜命令受付処理Ｓ１１０の例＞
命令受付部１１０は、アプリケーション実行装置２００からの問合せ命令２０１を受け付け、命令生成部１２０に出力する。図８に示すように、問合せ命令２０１には、電力テーブル３０１から２階電力のデータを取得する次のような命令が記述されている。
問合せ命令２０１：
ＳＥＬＥＣＴ  ２階電力
ＦＲＯＭ  電力
上記問合せ命令２０１には日時の指定が無い。よって、問合せ命令２０１は、電力テーブル３０１の全ての日時における２階電力を取得することを意味する。よって、問合せ命令２０１に含まれる値指定範囲２０１１は２０１４／３／３０から２０１４／４／３までとなる。
【００３４】
なお、図８の問合せ命令２０１とは異なり、問合せ命令に日時の指定があってもよい。
以下に、日時の指定がある問合せ命令の記述例を示す。
問合せ命令の記述例：
ＳＥＬＥＣＴ  ２階電力
ＦＲＯＭ  電力
ＷＨＥＮ  日時＝２０１４／０３／３１
この問合せ命令では、値指定範囲は２０１４／０３／３１となる。よって、この問合せ命令は、電力テーブルの２０１４／０３／３１における２階電力を取得することを意味している。
【００３５】
＜命令生成処理Ｓ１２０の例＞
命令生成部１２０は、問合せ命令２０１に含まれる日時の値指定範囲２０１１に、取得定義情報１６１に定義された複数の値定義範囲３００１の各々と重なる範囲があるか否かを判定する。命令生成部１２０は、重なる範囲があると判定した場合に、重なる範囲に含まれる定義値に対応するデータを各値定義範囲３００１に対応する取得方法で取得するデータ取得命令２０２を１つ生成する。
【００３６】
Ｓ１２０１において、命令生成部１２０は、問合せ命令２０１を解析し、テーブル名と列名とを抽出する。抽出された列名が、書き換え対象候補となる。
Ｓ１２０２において、命令生成部１２０は、問合せ命令２０１の中に書き換えが必要な箇所があるか否かを判定する。命令生成部１２０は、Ｓ１２０１で抽出したテーブル名と列名とを用いて、定義軸定義情報１５１を検索する。命令生成部１２０は、テーブル名と列名とが定義軸定義情報１５１にヒットした場合に、その列名を書き換えが必要な箇所であると判定する。
具体的には、命令生成部１２０は、図８に示す問合せ命令２０１からテーブル名「電力」と、列名「２階電力」を抽出し、図５の定義軸定義情報１５１を検索する。図５の定義軸定義情報１５１では、テーブル名「電力」と列名「２階電力」とがヒットするため、列名「２階電力」は書き換えが必要な箇所であると判定される。すなわち、図８の例では、アプリケーション実行装置２００から送られたＳＱＬ命令の列名「２階電力」が書き換え対象である。
Ｓ１２０３において、命令生成部１２０は、問合せ命令２０１の書き換えに必要な定義軸定義情報１５１、取得定義情報１６１、未定義情報１７１を取得する。
【００３７】
Ｓ１２０４において、命令生成部１２０は、取得した情報を使用して、問合せ命令２０１の列名を書き換える処理を実行する。
命令生成部１２０は、定義軸定義情報１５１から、テーブル名と列名とに対応する定義値を取得する。命令生成部１２０は、取得した定義値を用いて、問合せ命令２０１に含まれる定義値の値指定範囲２０１１に、取得定義情報１６１に定義された値定義範囲３００１と重なる範囲があるか否かを判定する。命令生成部１２０は、重なる範囲があると判定した場合に、重なる範囲が含まれる値定義範囲３００１に対応する取得方法を用いて、問合せ命令２０１の列名を書き換える。命令生成部１２０は、値定義範囲３００１と重なる範囲の列名のデータを取得する命令を、値定義範囲３００１に対応する取得方法を用いて取得する命令に書き換える。命令生成部１２０は、書き換えた問合せ命令２０１をデータ取得命令２０２とする。
【００３８】
図８を用いて、Ｓ１２０４における列名を書き換える処理について、さらに具体的に説明する。
命令生成部１２０は、定義軸定義情報１５１から電力テーブルの２階電力の定義値は日時であることを取得する。そこで、命令生成部１２０は、問合せ命令２０１に含まれる日時の値指定範囲２０１１「２０１４／３／３０から２０１４／４／３まで」に、取得定義情報１６１に定義された値定義範囲３００１ａ，３００１ｂと重なる範囲があるか否かを判定する。
命令生成部１２０は、値指定範囲２０１１の「２０１４／３／３０から２０１４／３／３１まで」は値定義範囲３００１ａと重なり、値指定範囲２０１１の「２０１４／４／１から２０１４／４／３まで」は値定義範囲３００１ｂと重なると判断する。
命令生成部１２０は、重なる範囲があると判定した場合に、重なる範囲に含まれる日時に対応するデータを値定義範囲３００１に対応する取得方法で取得するデータ取得命令２０２を生成する。具体的には、命令生成部１２０は、問合せ命令２０１を、「２０１４／３／３０から２０１４／３／３１まで」は値定義範囲３００１ａに対応する取得方法「建物―１Ｆ」で２階電力を取得し、「２０１４／４／１から２０１４／４／３まで」は値定義範囲３００１ｂに対応する取得方法「２Ｆ」で２階電力を取得するデータ取得命令２０２に書き換える。
【００３９】
なお、命令生成部１２０が、値指定範囲２０１１に複数の値定義範囲３００１のいずれの値定義範囲３００１とも重ならない範囲があると判定した場合、値指定範囲２０１１に取得方法が未定義の範囲があることを意味する。命令生成部１２０は、この取得方法が未定義の範囲に含まれる日時に対応するデータの値としてはデフォルト値を取得するという命令をデータ取得命令２０２に含める。図７では、デフォルト値は０であるが、その他の数でもよい。また、データ取得方法が未定義であることを示す文字列などをデフォルト値として設定してもよい。
【００４０】
以上のように、命令生成部１２０は、定義軸定義情報１５１及び取得定義情報１６１を用いて、書き換え対象候補について、適用する定義が存在するかを確認する。適用する定義が存在すれば、対象となる定義を使用して問合せ命令２０１を変換する。
問合せ命令２０１の変換としては、例えばＣＡＳＥ式に書き換えを行う。ＣＡＳＥ式のＷＨＥＮ句には、定義軸定義情報１５１及び取得定義情報１６１を使用した条件を使用する。ＴＨＥＮ句には、その条件に該当する取得定義を使用する。
どの定義区間にも該当しないＥＬＳＥ句にはデフォルト値を使用する。
以上のように、図８に示すデータ取得命令２０２が生成される。
【００４１】
＜データ取得実行処理Ｓ１３０の例＞
データ取得部１３０は、データ取得命令２０２を用いて、データベース３００の電力テーブル３０１から列名が２階電力のデータを取得データ２０３として取得するデータ取得実行処理Ｓ１３０を実行する。
【００４２】
データ取得部１３０は、命令生成部１２０からデータ取得命令２０２を取得する。
データ取得部１３０は、取得したデータ取得命令２０２をデータベース３００に発行することにより、データベース３００からデータ取得命令２０２に応じた取得データ２０３を取得する。データ取得部１３０は、具体的には、Ｊａｖａ（登録商標）プログラムからデータベースにアクセスするための標準インタフェースの１つであるＪＤＢＣ（Ｊａｖａ  ＤａｔａＢａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）、あるいは、ＯＤＢＣ（Ｏｐｅｎ  ＤａｔａＢａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）などの方法を用いて、データベース３００にデータ取得命令２０２を発行する。
図８では、データ取得部１３０は、取得データ２０３として「４，３，２，３，３」を取得する。
【００４３】
＜データ出力処理Ｓ１４０の例＞
データ出力部１４０は、データ取得部１３０により取得された取得データ２０３を、アプリケーション実行装置２００から送信された問合せ命令２０１に対する結果として、アプリケーション実行装置２００に出力する。
図８では、データ出力部１４０は、問合せ命令２０１に対する結果として、「４，３，２，３，３」を出力する。
【００４４】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係るデータ取得装置１００は、複数の定義区間からデータ取得するための問合せ命令を、データの定義区間毎の複数のデータ取得命令に分割することなく、一つのデータ取得命令に変換することができる。よって、本実施の形態に係るデータ取得装置１００によれば、データ取得の性能劣化を抑えながら、データ取得定義の変更に対する柔軟性を確保することができる。
【００４５】
本実施の形態に係るデータ取得装置１００は、データ取得定義に未定義の定義区間が存在する場合に、未定義の定義区間に適用するためのデフォルトのデータ取得定義を保持する未定義情報を備える。よって、本実施の形態に係るデータ取得装置１００によれば、未定義の定義区間のデータ取得を実行した場合でも、処理を続行することができる。
【００４６】
＊＊＊他の構成＊＊＊
図９は、本実施の形態に係るアプリケーション実行装置２００とデータ取得装置１００とデータベース３００との構成の一例を示す図である。また、図１０は、本実施の形態に係るアプリケーション実行装置２００とデータ取得装置１００とデータベース３００との構成の他の例を示す図である。
【００４７】
図９に示すように、データ取得装置１００は、アプリケーション実行装置２００及びデータベース３００と同じ１つの汎用的なハードウェアに搭載される構成でもよい。汎用的なハードウェアとは、パーソナルコンピュータ、サーバなどである。この構成では、データ取得装置１００は、プロセッサ及び記憶装置などのハードウェア資源をアプリケーション実行装置２００及びデータベース３００と共有する。このように、データ取得装置１００は、アプリケーション実行装置２００及びデータベース３００と同じ汎用的なハードウェアに搭載される場合、アプリケーション実行装置２００及びデータベース３００のそれぞれとの通信を行わない。さらに図９の構成では、ネットワークを介した通信が行われないため、データベース３００から取得するデータの量に対してネットワークが遅いような場合には、性能の向上が見込める。
【００４８】
また、図１０に示すように、定義軸定義情報１５１、取得定義情報１６１、未定義情報１７１などは、外部データベース４００に記憶された構成でもよい。データ取得装置１００は、データ取得処理の実行時に、外部データベース４００からデータ取得処理の実行に必要な情報を取り出す。図１０のような構成とすることでデータ取得装置１００のリソースを低減することができる。
【００４９】
なお、本実施の形態では、時間軸という１次元で決まるデータ定義区間を用いて説明したが、３次元の空間のように、複数の次元でデータの定義区間を決めることも可能である。
定義区間については、有限の区間として例を記載しているが、特に開始時点や終了時点を定めないような無限の区間を定めることもできる。例えば、ある時点で機器を切り替えるような場合、切り替え前の区間については開始時点を特に定める必要がないため、無限の区間として作成することができる。このような場合、開始時点をあらわす条件は省略し、変換後の条件を簡略化することができる。
また、図８の例では、ＣＡＳＥ式を使用して一つの問合せ命令になるように変換しているが、ＵＮＩＯＮを使用することも可能である。ＵＮＩＯＮを使用する場合、それぞれの区間ごとにＳＥＬＥＣＴを行う問合せ命令に展開し、それらをＵＮＩＯＮにより結合することで、一つの問合せ命令に変換することが可能である。
【００５０】
また、図８における問合せ命令２０１を変換したデータ取得命令２０２の例では、定義区間の重複が発生しないように、データの定義区間を表す条件の不等号には、開始の方に等号を入れている。ただし、終了の方に等号を入れることも可能であるし、別に定義を追加して、定義に従ってどちらに等号を入れるかを判断することも可能である。１日分のデータを集計するような場合において、深夜０時ちょうどのデータを前日と翌日とのどちらに加えるかといった、システムの要件に合わせた処理を作成しやすくなる。
さらに、複数の区間における取得定義が同じである場合、それらの区間に対応する条件を一つにまとめることが可能となる。この場合、変換後の問合せ命令を簡略化されることで速度の向上が見込める。
【００５１】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
【００５２】
＊＊＊構成の説明＊＊＊
図１１は、本実施の形態に係るデータ取得装置１００ａのブロック構成を示す図である。
本実施の形態に係るデータ取得装置１００ａは、図２に示すデータ取得装置１００のブロック構成に加え、取得定義登録部１８０を備える。
取得定義登録部１８０は、複数の値定義範囲の各値定義範囲３００１と、複数の値定義範囲の各値定義範囲３００１に対応するデータの取得方法とを、取得定義情報１６１に登録する。取得定義登録部１８０は、複数の値定義範囲の各値定義範囲３００１が他の値定義範囲と重複しないように、複数の値定義範囲の各値定義範囲３００１を登録する。
【００５３】
実施の形態１では、データの取得方法の定義を特定の値定義範囲に対して定義するようにした。この中で、取得定義情報１６１に定義されているデータの値定義範囲は、そのままでは重複する範囲の存在を許している。しかし、複数のデータの値定義範囲が重複する場合、適用されるデータの取得方法の定義が不明確になる、あるいは、重複してデータの取得が行われてしまうなどの不具合が発生する可能性がある。そこで、本実施の形態に係るデータ取得装置１００ａでは、既に定義されたデータの値定義範囲と重複する値定義範囲の追加を防止する取得定義登録部１８０を備える。取得定義登録部１８０は、データ定義作成部とも称される。
【００５４】
＊＊＊動作の説明＊＊＊
次に動作について説明する。
本実施の形態に係るデータ取得処理Ｓ１００の動作は、実施の形態１で説明した。本実施の形態では、データ取得装置１００ａは、さらに取得定義登録部１８０を用いた取得定義登録処理Ｓ１８０を実行する。
【００５５】
図１２は、本実施の形態に係る取得定義登録部１８０の取得定義登録処理Ｓ１８０の動作を示すフロー図である。図１２を用いて、本実施の形態における取得定義情報１６１に取得定義を追加する取得定義登録処理Ｓ１８０の動作について説明する。
【００５６】
Ｓ１８１において、取得定義登録部１８０は、取得定義情報１６１に対する取得定義の追加要求を受け付ける。取得定義の追加要求とは、データベースに格納されているデータの取得方法に変更があった場合等に、取得定義情報１６１に対し変更後の取得方法を追加する要求である。追加要求には、取得方法を追加するテーブル名と、取得方法を追加するデータの列名と、取得方法を追加するデータの値定義範囲、すなわち定義区間とが含まれる。
【００５７】
Ｓ１８２において、取得定義登録部１８０は、受け付けた追加要求に対して、追加しようとするデータの値定義範囲が、既に取得定義情報１６１に存在する値定義範囲と重複がないかをチェックする。
重複がない場合（Ｓ１８２でＮＯ）、取得定義登録部１８０は、追加要求に含まれるデータの取得定義を取得定義情報１６１の行に追加する（Ｓ１８３）。
重複がある場合（Ｓ１８２でＹＥＳ）、取得定義登録部１８０は、予め定められた対応方法に従って処理を行う（Ｓ１８４）。
【００５８】
ここで、予め定められた対応方法としては、以下のような方法がある。例えば、既存のデータの値定義範囲を短縮して重複しないようにデータの取得定義を追加する方法、追加しようとするデータの値定義範囲を短縮して追加する方法などがある。また、エラーとしてデータの取得定義を追加しない方法、新たにデータの取得定義を追加しようとするユーザなどに、上記の方法から選択させる方法などがある。
【００５９】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように本実施の形態に係るデータ取得装置１００ａによれば、取得定義登録部１８０を有するので、データの定義区間の重複の発生を防止することができ、データ取得時に発生する取得されるデータが不定となるなどの問題を回避することができる。
【００６０】
実施の形態３．
本実施の形態では、主に、実施の形態１，２と異なる点について説明する。
実施の形態１では、データの定義値として使用されるのは、日時などの１種類のデータであった。本実施の形態では、定義の管理方法を変更することで、座標におけるＸ軸とＹ軸のように複数の条件から定められる定義値を用いて値定義範囲を設定し、値定義範囲に対応する取得方法を定義することができるデータ取得装置１００ａについて説明する。
本実施の形態において、実施の形態１，２で説明したものと同様の構成には同一の符号を付し、その説明を省略する。
【００６１】
具体例として、河川の水位から単位時間当たりに川を流れる流量、すなわち水量を、水位テーブルから求める例がある。河川において、水位Ｈと水量Ｑとは、以下のような計算式で表される。
Ｑ＝ａ（Ｈ＋ｂ）＾２（ただし、ａ，ｂは定数）
しかし、堤防の形状などにより、ある水位から河川の形状が急激に変化するような場合、その水位を境に別の計算式を使用する必要がある場合がある。また、洪水などにより堆積物が川底にたまった場合などにも水位と水量の関係が変化する。したがって、ある河川において水位から水量を求めるためには、時間と水位との両方の条件に基づいて、水量を求める取得方法である計算式を変更する必要が生じる。
本実施の形態では、このように複数の条件から定められる定義値の値定義範囲、すなわち定義区間に応じて、取得方法を切り替えることができるデータ取得装置１００ａについて説明する。
なお、上記の例では、水位テーブルから取得する取得データ２０３は、単位時間ごとの水量である。また、単位時間ごとの水量の定義値は時間と水位とから定められ、定義値の値定義範囲も時間と水位とから定められる。
【００６２】
＊＊＊構成の説明＊＊＊
図１３は、本実施の形態に係るデータ取得装置１００ａのブロック構成を示す図である。
図１３は図２に対応する図であり、図２と異なる点は、図２の定義軸情報記憶部１５０と取得定義記憶部１６０に代えて、ＩＤ別取得定義記憶部１８１と定義域条件記憶部１８２と条件定義記憶部１８３とを備える点である。
ＩＤ別取得定義記憶部１８１は、ＩＤ別取得定義情報１８１０を記憶する。
定義域条件記憶部１８２は、定義域条件情報１８２０を記憶する。
条件定義記憶部１８３は、条件定義情報１８３０を記憶する。
【００６３】
なお、ＩＤ別取得定義情報１８１０と定義域条件情報１８２０と条件定義情報１８３０とは、命令生成部１２０の処理に用いられ、実施の形態１で説明した定義軸定義情報１５１と取得定義情報１６１と同様の機能を有する。よって、ＩＤ別取得定義記憶部１８１と定義域条件記憶部１８２と条件定義記憶部１８３とは、定義軸情報記憶部１５０と取得定義記憶部１６０とに相当する構成である。
【００６４】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係るデータ取得装置１００ａのデータ取得処理Ｓ１００ａについて説明する。
図１４は、本実施の形態に係る命令生成部１２０の命令生成処理Ｓ１２０ａを示すフロー図である。
図１５は、本実施の形態に係るデータ取得装置１００ａのデータ取得処理Ｓ１００ａの動作の具体例を示す図である。
図１５の具体例では、データ取得装置１００ａが、アプリケーション実行装置２００から、水位テーブル３０１ａから日時毎の水量を取得する問合せ命令２０１を受信した場合を示している。
【００６５】
本実施の形態に係るデータ取得処理Ｓ１００ａにおいて、実施の形態１の図３で説明したデータ取得処理Ｓ１００と異なる点は、命令生成処理Ｓ１２０である。命令受付処理Ｓ１１０、データ取得実行処理Ｓ１３０、データ出力処理Ｓ１４０については、実施の形態１と同様であるため、説明を省略する。
【００６６】
まず、ＩＤ別取得定義情報１８１０と定義域条件情報１８２０と条件定義情報１８３０との構成について図１５を用いて説明する。
ＩＤ別取得定義情報１８１０には、定義ＩＤと、テーブル名と、列名と、取得方法とが設定される。定義ＩＤは取得方法を一意に識別する識別子である。
定義域条件情報１８２０には、定義ＩＤと、条件ＩＤとが対応付けられている。条件ＩＤは、条件の内容を一意に識別する識別子である。１つの定義ＩＤに複数の条件ＩＤが対応付けられていてもよい。
条件定義情報１８３０には、条件ＩＤと、条件の内容とが対応付けられている。
【００６７】
以上のように、ＩＤ別取得定義情報１８１０と定義域条件情報１８２０と条件定義情報１８３０とにより、定義ＩＤから定まる１つの取得方法に対し、複数の条件を対応付けることができる。
具体的には、定義域条件情報１８２０において、水量１に対し期間１と水位１との条件ＩＤを対応付けることにより、水量１の取得方法である計算式１に対し、期間１かつ水位１という条件を対応付けることができる。すなわち、定義域条件情報１８２０において、定義ＩＤに複数の条件ＩＤを対応付けることにより、定義ＩＤに対応する取得方法に対し、複数の条件から定まる値定義範囲３００１を対応付けることができる。
【００６８】
次に、本実施の形態に係る命令生成部１２０の命令生成処理Ｓ１２０ａについて図１４及び図１５を用いて説明する。
Ｓ１２０１ａにおいて、命令生成部１２０は、問合せ命令２０１を解析し、書き換え対象の候補となる箇所を抽出する。問合せ命令２０１には、データベース３００を指定するテーブル名と、取得するデータを指定するための列名とが含まれる。本実施の形態では、列名は複数含まれている。命令生成部１２０は、問合せ命令２０１を解析し、テーブル名と列名とを抽出する。問合せ命令２０１を解析方法は、実施の形態１で説明したものと同様である。
図１５の例では、問合せ命令２１０から、列名として日時及び水量、テーブル名として水位テーブルが抽出される。
【００６９】
Ｓ１２０２ａにおいて、命令生成部１２０は、問合せ命令２０１の中に書き換えが必要な箇所があるか否かを判定する。命令生成部１２０は、Ｓ１２０１ａで抽出したテーブル名と列名とを用いて、ＩＤ別取得定義情報１８１０を検索する。命令生成部１２０は、列名が複数ある場合には、複数の列名のうちの１つの列名とテーブル名とを用いて、ＩＤ別取得定義情報１８１０を検索する。命令生成部１２０は、テーブル名と列名とがＩＤ別取得定義情報１８１０にヒットした場合に、その列名を書き換えが必要な箇所であると判定し、ヒットした行に対応する取得方法と定義ＩＤとを取得する。
図１５の例では、命令生成部１２０は、水位テーブルと日時とでＩＤ別取得定義情報１８１０を検索すると共に、水位テーブルと水量とでＩＤ別取得定義情報１８１０を検索する。図１５に示す例では、ＩＤ別取得定義情報１８１０において水位テーブルと水量とがヒットするので、命令生成部１２０は、定義ＩＤ及び取得方法として、水量１及び計算式１と、水量２及び計算式２とを取得する。
【００７０】
書き換えが必要な箇所があると判定された場合（Ｓ１２０２ａでＹＥＳ）、Ｓ１２０３ａに進む。
書き換えが必要な箇所がないと判定された場合（Ｓ１２０２ａでＮＯ）、Ｓ１２０５に進む。
【００７１】
Ｓ１２０３ａにおいて、命令生成部１２０は、問合せ命令２０１の書き換えに必要な定義域条件情報１８２０と条件定義情報１８３０とを取得する。
【００７２】
Ｓ１２０４ａにおいて、命令生成部１２０は、取得した情報を使用して、問合せ命令２０１を書き換える処理を実行する。
Ｓ１２０４１ａにおいて、命令生成部１２０は、ＩＤ別取得定義情報１８１０から取得した定義ＩＤの全てについて命令文を作成したか否かを判定する。
定義ＩＤに全てについて命令文を作成したと判定した場合、処理はＳ１２０２ａに戻る。
未処理の定義ＩＤがあると判定した場合、処理はＳ１２０４２ａに進む。
【００７３】
Ｓ１２０４２ａにおいて、命令生成部１２０は、ＩＤ別取得定義情報１８１０から取得した処理対象の定義ＩＤを用いて、定義域条件情報１８２０を検索し、条件ＩＤを取得する。次に、命令生成部１２０は、定義域条件情報１８２０から取得した条件ＩＤを用いて、条件定義情報１８３０を検索し、条件ＩＤに対応する条件を取得する。命令生成部１２０は、取得した条件を用いて、取得した条件を満たす場合は処理対象の定義ＩＤに対応する取得方法により列名のデータを取得する命令文を生成する。ここで生成される命令文は、書き換え後の問合せ命令で使用する命令文のうち、処理対象の定義ＩＤに対応する部分的な命令文である。
命令生成部１２０は、ＩＤ別取得定義情報１８１０から取得した定義ＩＤに全てについて命令文を作成するまで、Ｓ１２０４１ａとＳ１２０４２ａとを繰り返す。すなわち、図１５の例では、定義ＩＤが水量１と水量２であるため、水量１と水量２との両方について、命令文を作成するまで、Ｓ１２０４１ａとＳ１２０４２ａとを繰り返す。
【００７４】
図１５の例では、命令生成部１２０は、定義ＩＤである水量１を用いて、定義域条件情報１８２０を検索し、期間１と水位１とを条件ＩＤとして取得する。
次に、命令生成部１２０は、定義域条件情報１８２０から取得した期間１と水位１とを用いて、条件定義情報１８３０を検索する。命令生成部１２０は、期間１に対応する条件として日時が２０１３／０４／０１から２０１４／０４／０１までを取得する。また、命令生成部１２０は、水位１に対応する条件として水位が７以上を取得する。命令生成部１２０は、日時が２０１３／０４／０１から２０１４／０４／０１までであり、かつ、水位が７以上の場合は、水量１に対応する計算式１で水量を算出する命令文２０２１を生成する。図１５の命令文２０２１に示すように、問合せ命令２０１の列名である水量をＣＡＳＥ式で書き換える場合、ＷＨＥＮ句とＴＨＥＮ句を作成する。このときＷＨＥＮ句に使用される条件は、定義域条件情報１８２０に設定されている複数の条件（期間１及び水位１）を結合したものである。
このとき、命令生成部１２０は、水量２について、命令文の生成処理が未処理であるため（Ｓ１２０４１ａでＮＯ）、Ｓ１２０４２ａに進むものとする。
命令生成部１２０は、水量２についても水量１の場合と同様の処理を実行し、日時が２０１４／０４／０１から２０１５／０４／０１までであり、かつ、水位が７より少ない場合は、水量２に対応する計算式２で水量を算出する命令文２０２２を生成する。
【００７５】
なお、命令生成部１２０は、水位テーブル３０１ａにおいて上記のいずれの条件にも当てはまらないデータは、取得方法が未定義であると判定する。命令生成部１２０は、上記のいずれの条件にも当てはまらないデータは未定義情報１７１のデフォルト値に設定されている計算式で取得するＥＬＳＥ句の命令文２０２３を生成する。
【００７６】
Ｓ１２０５ａにおいて、命令生成部１２０は、生成した部分的な命令文を結合し、結合した命令文を用いて問合せ命令２０１の列名部分を書き換える。
図１５の例では、命令生成部１２０は、生成した３つの命令文２０２１，２０２２，２０２３を結合し、結合した命令文を用いてＣＡＳＥ句を生成し、問合せ命令２０１の列名部分を書き換える。
命令生成部１２０は、書き換えた問合せ命令２０１をデータ取得命令２０２としてデータ取得部１３０に出力する。
【００７７】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るデータ取得装置によれば、複数の条件から定まる定義域を定義することができ、定義域に対して非連続的に変化するような値を求めることができる。
【００７８】
なお、本実施の形態では、具体例として河川やダムなどの水位と水量の関係について説明したが、位相の変化などにより温度に対し抵抗率が非連続に変化する温度と抵抗率などにも定容することができる。
また、本実施の形態では、２つの条件により定義域を定める方法について説明したが、定義域条件情報において１つの定義ＩＤに対して３つの条件ＩＤを対応付けてもよい。１つの定義ＩＤに対応付ける条件ＩＤの数は４つ、５つなどでもよい。
【００７９】
＊＊＊ハードウェア構成例の説明＊＊＊
最後に、図１６を用いて、実施の形態１に係るデータ取得装置１００，１００ａのハードウェア構成の一例について説明する。
【００８０】
データ取得装置１００，１００ａはコンピュータである。
データ取得装置１００，１００ａは、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００８１】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵである。
【００８２】
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００８３】
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
通信装置９０４は、アプリケーション実行装置２００あるいはデータベース３００などとネットワークを介して通信を行うための装置である。
【００８４】
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００８５】
補助記憶装置９０２には、図２、図１１及び図１３に示す命令受付部１１０、命令生成部１２０、データ取得部１３０、データ出力部１４０、取得定義登録部１８０の機能を実現するプログラムが記憶されている。以下、命令受付部１１０、命令生成部１２０、データ取得部１３０、データ出力部１４０、取得定義登録部１８０をまとめて「部」と表記する。
【００８６】
上述した「部」の機能を実現するプログラムは、データ取得プログラムとも称される。「部」の機能を実現するプログラムは、１つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。また、「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記憶される。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
【００８７】
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００８８】
図１６では、１つのプロセッサ９０１が図示されているが、データ取得装置１００，１００ａが複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００８９】
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリにファイルとして記憶される。
図２、図１１及び図１３に示す定義軸情報記憶部１５０、取得定義記憶部１６０、未定義情報記憶部１７０、ＩＤ別取得定義記憶部１８１、定義域条件記憶部１８２、条件定義記憶部１８３は、補助記憶装置９０２により構成されている。
補助記憶装置９０２には、図２、図１１及び図１３に示す定義軸定義情報１５１、取得定義情報１６１、未定義情報１７１、ＩＤ別取得定義情報１８１０、定義域条件情報１８２０、条件定義情報１８３０が記憶されている。
【００９０】
「部」を「プロセッシングサーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
「回路」及び「プロセッシングサーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【００９１】
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００９２】
本実施の形態に係るデータ取得装置１００は、パーソナルコンピュータあるいはサーバといった汎用的なハードウェアで動作するソフトウェアとして実現してもよいし、専用のハードウェアとして実現してもよい。
【００９３】
上記の実施の形態では、命令受付部、命令生成部、データ取得部、データ出力部、取得定義登録部のそれぞれが独立した機能ブロックとしてデータ取得装置を構成している。しかし、データ取得装置は上記のような構成でなくてもよく、データ取得装置の構成は任意である。
例えば、命令受付部、データ取得部、データ出力部を１つの機能ブロックとしてもよい。また、命令生成部をさらに細かく分けて複数の機能ブロックとしてもよい。データ取得装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成でデータ取得装置を構成しても構わない。
また、データ取得装置は、１つの装置でなく、複数の装置から構成されたデータ取得システムでもよい。
【００９４】
また、実施の形態１から３について説明したが、これらの３つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの３つの実施の形態のうち、１つの実施の形態を部分的に実施しても構わない。その他、これらの３つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００９５】
１００，１００ａ  データ取得装置、１１０  命令受付部、１２０  命令生成部、１３０  データ取得部、１４０  データ出力部、１５０  定義軸情報記憶部、１５１  定義軸定義情報、１６０  取得定義記憶部、１６１  取得定義情報、１６１１  取得方法、１７０  未定義情報記憶部、１７１  未定義情報、１８０  取得定義登録部、１８１  ＩＤ別取得定義記憶部、１８２  定義域条件記憶部、１８３  条件定義記憶部、１８１０  ＩＤ別取得定義情報、１８２０  定義域条件情報、１８３０  条件定義情報、２００  アプリケーション実行装置、２０１  問合せ命令、２０１１  値指定範囲、２０２  データ取得命令、２０２１，２０２２，２０２３  命令文、２０３  取得データ、３００  データベース、３０１  電力テーブル、３０１ａ  水位テーブル、３００１，３００１ａ，３００１ｂ  値定義範囲、３００２  定義値、４００  外部データベース、１０００  汎用的なハードウェア、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１，９１２  ケーブル、９０４１  レシーバー、９０４２  トランスミッター、Ｓ１００  データ取得処理。
【図１】
2017009886.tif 000003
【図２】
2017009886.tif 000004
【図３】
2017009886.tif 000005
【図４】
2017009886.tif 000006
【図５】
2017009886.tif 000007
【図６】
2017009886.tif 000008
【図７】
2017009886.tif 000009
【図８】
2017009886.tif 000010
【図９】
2017009886.tif 000011
【図１０】
2017009886.tif 000012
【図１１】
2017009886.tif 000013
【図１２】
2017009886.tif 000014
【図１３】
2017009886.tif 000015
【図１４】
2017009886.tif 000016
【図１５】
2017009886.tif 000017
【図１６】
2017009886.tif 000018
【国際調査報告】
2017009886.tif 000019
2017009886.tif 000020