(57)【要約】  いくつかの態様によれば、ユーザにより提供される実時間フィードバックに基づいてデータセットの内容を動的に解析することによりユーザをデータセットのレコードフォーマットを決定するのを支援することにより、データ処理システムにより生じるエラーを減らすツールを提供する。本データ処理システムは、決定されたレコードフォーマットを適用して、エラー発生を減らしながらデータセットの内容を自動的に解析することができる。いくつかの態様によれば、当該ツールは、データセットの内容に基づいてユーザがデリミタを識別できるようにし、識別されたデリミタに従い暫定レコードフォーマットを生成可能なユーザインタフェースを生成することができる。
2020530629.tif 000002
【特許請求の範囲】
【請求項１】
データセットのレコードフォーマットを決定する方法であって、前記データセットが複数のバイトを含み、前記方法が、少なくとも１つのコンピューティング装置により、
第１レコードフォーマットを用いて前記データセットを構文解析して前記複数のバイトにより表された文字列を決定すると共に、前記第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定するステップと、
ユーザインタフェースを介して前記第１レコードフォーマットに従い前記１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、
前記文字列の複数個を、前記ユーザインタフェースを介して前記ユーザインタフェース要素の列として、且つ前記複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、
前記ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が前記文字列の文字に関連付けられているユーザ入力を受信するステップと、
前記受信した入力に基づいて第２レコードフォーマットを生成し、且つ前記第２レコードフォーマットが前記選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップを含む方法。
【請求項２】
前記複数の文字列を表示するステップが、
前記ユーザインタフェースを介して前記文字列の隣接するサブセットを前記ユーザインタフェース要素列として、且つ前記サブセットの各文字が別個のユーザインタフェース要素として順次提示されるように表示するステップを含む、請求項１に記載の方法。
【請求項３】
前記第２レコードフォーマットを用いて前記データセットを構文解析するステップと、
、前記ユーザインタフェースを介して、前記第２レコードフォーマットを用いて前記データセットの前記構文解析結果を表示するステップを更に含む、請求項１に記載の方法。
【請求項４】
前記第２レコードフォーマットが前記データセットを完全に構文解析しないことを決定するステップを更に含み、前記ユーザインタフェースを介して前記第２レコードフォーマットを用いて前記データセットの構文解析結果を表示するステップが、前記第２レコードフォーマットが前記データセットを完全に構文解析しない旨の警告の表示を含む、請求項３に記載の方法。
【請求項５】
１つ以上のヒューリスティクスに少なくとも部分的に基づいて前記第１レコードフォーマットを決定して１つ以上の文字をデリミタ候補として識別するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記第１レコードフォーマットを決定するステップが、英数字でないデータセットの文字、スペース、引用符、ピリオド、前方スラッシュ又はハイフンを識別するステップと、及び前記識別された文字により区切られた前記第１レコードフォーマットのデータフィールドを生成するステップを含む、請求項５に記載の方法。
【請求項７】
前記第１の文字が印刷不可能な文字である、請求項１に記載の方法。
【請求項８】
前記第１レコードフォーマットが区切られたデータフィールドだけを含む、請求項１に記載の方法。
【請求項９】
前記ユーザ入力が前記少なくとも１つのコンピューティング装置に、前記ユーザインタフェースにおける前記選択されたユーザインタフェース要素の外観を変えさせる、請求項１に記載の方法。
【請求項１０】
前記第１レコードフォーマットを用いて前記データセットの前記構文解析結果を前記ユーザインタフェースを介して表示するステップが、前記データセットのレコード及び前記レコードのデータフィールド値のリストの表示を含む、請求項１に記載の方法。
【請求項１１】
前記第１レコードフォーマットが、複数の異なるデリミタを有する複数の区切られたデータフィールドを含む、請求項１に記載の方法。
【請求項１２】
少なくとも１つのプロセッサと、
少なくとも１つのユーザインタフェース装置と、
プロセッサ実行可能命令を含む少なくとも１つのコンピュータ可読記憶媒体を含むコンピュータシステムであって、前記命令が実行された場合、前記少なくとも１つのプロセッサに、
第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析させて前記複数のバイトにより表された文字列を決定させると共に、前記第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定させ、
前記少なくとも１つのユーザインタフェース装置を介して、前記第１レコードフォーマットの前記１つ以上のデータフィールドの値の少なくともいくつかを前記少なくとも１つのユーザインタフェースを介して表示させ、
前記少なくとも１つのユーザインタフェース装置を介して、前記文字列の複数個を、前記少なくとも１つのユーザインタフェースを介して前記ユーザインタフェース要素の列として、且つ前記複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示させ、
前記少なくとも１つのユーザインタフェース装置を介して、前記ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が前記文字列の文字に関連付けられているユーザ入力を受信させ、
前記受信した入力に基づいて第２レコードフォーマットを生成させ、但し前記第２レコードフォーマットが前記選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成させるシステム。
【請求項１３】
前記複数の文字列を表示するステップが、
前記ユーザインタフェースを介して前記文字列の隣接するサブセットを前記ユーザインタフェース要素の列として、且つ前記サブセットの各文字が別個のユーザインタフェース要素として順次提示されるように表示するステップを含む、請求項１２に記載のコンピュータシステム。
【請求項１４】
前記プロセッサ実行可能命令が更に、前記少なくとも１つのプロセッサに、
前記第２レコードフォーマットを用いて前記データセットを構文解析させ、且つ
前記少なくとも１つのユーザインタフェース装置を介して、前記第２レコードフォーマットを用いて前記データセットの前記構文解析結果を前記ユーザインタフェースを介して表示させるステップを更に含む、請求項１２に記載のコンピュータシステム。
【請求項１５】
前記プロセッサ実行可能命令が更に、前記少なくとも１つのプロセッサに、前記第２レコードフォーマットが前記データセットを完全に構文解析しないことを決定させ、前記ユーザインタフェースを介して前記第２レコードフォーマットを用いて前記データセットの構文解析結果を表示するステップが、前記第２レコードフォーマットが前記データセットを完全に構文解析しない旨の警告の表示を含む、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記プロセッサ実行可能命令が更に、前記少なくとも１つのプロセッサに、１つ以上のヒューリスティクスに少なくとも部分的に基づいて前記第１レコードフォーマットを決定して１つ以上の文字をデリミタ候補として識別させる、請求項１２に記載のコンピュータシステム。
【請求項１７】
前記第１レコードフォーマットを決定するステップが、英数字でないデータセットの文字、スペース、引用符、ピリオド、前方スラッシュ又はハイフンを識別するステップと、及び前記識別された文字により区切られた前記第１レコードフォーマットのデータフィールドを生成するステップを含む、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記第１レコードフォーマットを決定するステップが、データレコードデリミタを識別するステップを含む、請求項１６に記載のコンピュータシステム。
【請求項１９】
前記ユーザ入力が、前記少なくとも１つのプロセッサに、前記ユーザインタフェースにおける前記先頭のユーザインタフェース要素の外観を変えさせる、請求項１２に記載のコンピュータシステム。
【請求項２０】
前記第１レコードフォーマットを用いて前記データセットの前記構文解析結果を前記少なくとも１つのユーザインタフェース装置を介して表示するステップが、前記データセットのレコード及び前記レコードのデータフィールド値のリストの表示を含む、請求項１２に記載のコンピュータシステム。
【請求項２１】
前記第１レコードフォーマットが、複数の異なるデリミタを有する複数の区切られたデータフィールドを含む、請求項１２に記載のコンピュータシステム。
【請求項２２】
少なくとも１つのプロセッサと、
第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析して前記複数のバイトにより表された文字列を決定すると共に、前記第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定する手段と、
前記少なくとも１つのユーザインタフェースを介して前記第１レコードフォーマットの１つ以上のデータフィールドの値の少なくともいくつかを表示する手段と、
前記少なくとも１つのユーザインタフェースを介して、前記文字列の一部を、前記ユーザインタフェース要素の列として、且つ前記文字列の一部の各文字が別個のユーザインタフェース要素として順次提示されるように表示する手段と、
前記ユーザインタフェース要素列の第１のユーザインタフェース要素に関連付けられたユーザ入力であって前記第１のユーザインタフェース要素が前記文字列の第１の文字に関連付けられているユーザ入力を受信する手段と、
前記受信した入力に基づいて第２レコードフォーマットを生成し、且つ前記第２レコードフォーマットが、前記第１の文字により区切られたデータフィールドを含むように生成する手段を含むコンピュータシステム。
【請求項２３】
データセットのレコードフォーマットを決定する方法であって、前記データセットが複数のバイトを含み、前記方法が、少なくとも１つのコンピューティング装置により反復的にユーザ入力を受信するステップと、当該ユーザ入力に基づいてレコードフォーマットを生成するステップを含み、前記反復的処理は直近に生成されたレコードフォーマットを出力する旨を示すユーザ入力を受信するまで継続され、前記反復的処理が、
初期レコードフォーマットを用いて前記データセットを構文解析して前記複数のバイトにより表された文字列を決定すると共に、前記初期レコードフォーマットに従い１つ以上のデータフィールドの値を決定するステップと、
ユーザインタフェースを介して前記初期レコードフォーマットに従い前記１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、
前記文字列の複数個を、前記ユーザインタフェースを介して前記ユーザインタフェース要素の列として、且つ前記複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、
前記ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が前記文字列の文字に関連付けられているユーザ入力を受信するステップと、
前記受信した入力に基づいて後続レコードフォーマットを生成し、且つ前記後続レコードフォーマットが、前記選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップを反復することを含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
実行可能プログラムは、実行中に１つ以上のデータセットからデータを読み出すべく構成されていてよい。例えば、データセットは、媒体に格納されていて実行可能プログラムの１つ以上の処理により照会されるデータを含んでいてよい。これらの処理は、データを変更して１つ以上の出力データ記憶位置に書き込むことができる。いくつかの場合において、データセットからのデータを特定のデータフィールド（単に「フィールド」とも呼ばれる）に関連付けられているものとして解釈することが望ましいであろう。データを解釈して、１つ以上のデータレコードについてデータフィールドの値を決定する処理を一般に、データの「構文解析」と称する。特定の構文解析スキームを、実行可能プログラムにより、データ自体により、又はプログラムとデータの組み合わせにより定義することができる。構文解析スキームは、典型的に多数のデータレコード内の多数のデータフィールドについてデータを解釈する仕方を定義するものであり、「レコードフォーマット」と称することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
いくつかの場合において、データレコードは、当該レコードのデータフィールドが固定長であると仮定して構文解析することができる。例えば、日付の値は常に８桁で表すことができるため、「日付」データフィールドは８文字を選択することで識別できよう。他の場合において、データフィールドは可変長であってよく、コンピュータ処理がデータに注目することによりフィールドの先頭及び末尾を識別できるようにデータを構成することができる。
【０００３】
データは、デリミタを介して、又は当該データの長さを前置することにより、可変長フィールドに合わせて構成することができる。デリミタ方式では、データフィールドは、一方又は両方終端においてデータフィールドの境界を識別可能にする所定のバイト値（又はバイト列）により区切られている。この方式ではデータフィールドが「デリミタ」と称する文字及び／又はバイト値（或いは列）を含んでいてはならず、さもなければコンピュータ処理がデータフィールド内のある位置をデータフィールドの先頭又は末尾と誤って識別するであろう。長さ前置方式は、長さ前置が終了した後で読み出されるデータフィールドの長さをコンピュータプログラムに指示する１つ以上のバイトをデータフィールド値の前に置くものである。
【課題を解決するための手段】
【０００４】
いくつかの態様によれば、データセットのレコードフォーマットを決定する方法を提供し、当該データセットは複数のバイトを含み、本方法は、少なくとも１つのコンピューティング装置により、第１レコードフォーマットを用いてデータセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定するステップと、ユーザインタフェースを介して当該第１レコードフォーマットに従い１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、当該文字列の複数個を、当該ユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信するステップと、当該受信した入力に基づいて第２レコードフォーマットを生成し、且つ当該第２レコードフォーマットが当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップを含んでいる。
【０００５】
いくつかの態様によれば、少なくとも１つのプロセッサと、少なくとも１つのユーザインタフェース装置と、プロセッサにより実行可能な命令を含む少なくとも１つのコンピュータ可読媒体を含むコンピュータシステムを提供し、当該命令が実行されたならば、当該少なくとも１つのプロセッサに、第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析させて当該複数のバイトにより表された文字列を決定させると共に、当該第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定させ、当該少なくとも１つのユーザインタフェース装置を介して、当該第１レコードフォーマットの当該１つ以上のデータフィールドの値の少なくともいくつかを表示させ、当該少なくとも１つのユーザインタフェース装置を介して、当該文字列の複数個を、当該少なくとも１つのユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示させ、当該少なくとも１つのユーザインタフェース装置を介して、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信させ、当該受信した入力に基づいて第２レコードフォーマットを生成させ、但し当該第２レコードフォーマットが当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成させる。
【０００６】
いくつかの態様によれば、少なくとも１つのプロセッサと、第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定する手段と、当該少なくとも１つのユーザインタフェースを介して当該第１レコードフォーマットの１つ以上のデータフィールドの値の少なくともいくつかを表示する手段と、当該少なくとも１つのユーザインタフェースを介して当該文字列の一部をユーザインタフェース要素の列として、且つ当該文字列の一部の各文字が別個のユーザインタフェース要素として順次提示されるように表示する手段と、当該ユーザインタフェース要素列の第１のユーザインタフェース要素に関連付けられたユーザ入力であって当該第１のユーザインタフェース要素が当該文字列の第１の文字に関連付けられているユーザ入力を受信する手段と、当該受信した入力に基づいて第２レコードフォーマットを生成し、且つ当該第２レコードフォーマットが当該第１の文字により区切られたデータフィールドを含むように生成する手段を含むコンピュータシステムを提供する。
【０００７】
データセットのレコードフォーマットを決定する方法であって、当該データセットは複数のバイトを含み、本方法は、少なくとも１つのコンピューティング装置により反復的にユーザ入力を受信するステップと、当該ユーザ入力に基づいてレコードフォーマットを生成するステップを含み、前記反復的処理は直近に生成されたレコードフォーマットを出力する旨を示すユーザ入力を受信するまで継続され、前記反復的処理は、初期レコードフォーマットを用いて当該データセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該初期レコードフォーマットに従い当該１つ以上のデータフィールドの値を決定するステップと、ユーザインタフェースを介して当該初期レコードフォーマットに従い当該１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、当該文字列の複数個を、当該ユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信するステップと、当該受信した入力に基づいて後続レコードフォーマットを生成し、且つ当該後続レコードフォーマットが当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップを反復することを含んでいる。
【０００８】
上記は、添付の特許請求の範囲によって定義される本発明の非限定的概要である。
【０００９】
以下の図面を参照して、様々な態様及び実施形態を説明する。これらの図面は、必ずしも一定の縮尺で描かれていないことが理解されるものとする。添付図面において、各種図面に示す同一又はほぼ同一の構成要素の各々を同一の番号で表している。簡潔のため、全ての図面において必ずしも全ての構成要素にラベル付けしている訳ではない。
【図面の簡単な説明】
【００１０】
【図１】いくつかの実施形態による、定義されたレコードフォーマットに基づいてシステムがデータセットを構文解析する処理を示す。
【図２】いくつかの実施形態による、２つの異なるレコードフォーマットを用いてデータセットを構文解析する処理を示す。
【図３Ａ】いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別可能なユーザインタフェースを示す。
【図３Ｂ】いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別可能なユーザインタフェースを示す。
【図３Ｃ】いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別可能なユーザインタフェースを示す。
【図４】いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別し、生成されたレコードフォーマットを視認可能なユーザインタフェースを示す。
【図５】いくつかの実施形態による、ユーザインタフェースを介したユーザによるデリミタの選択に基づいてレコードフォーマットを生成する方法のフロー図である。
【図６】いくつかの実施形態による、ヒューリスティクスを適用して初期レコードフォーマットを生成するレコードフォーマット生成方法のフロー図である。
【図７】本発明の複数の態様が実装可能なコンピューティングシステム環境の一例を示す。
【発明を実施するための形態】
【００１１】
発明者らは、データセットのレコードフォーマットをユーザが定義し易くするツールをデータ処理システムに備えることにより、データ処理システムに生じるエラーを効率的に減少できることを認識及び評価するに至った。当該ツールは、ユーザから提供される実時間フィードバックに基づいてデータセットの内容を動的に解析することができる。データ処理システムは、エラーの発生を抑えつつ、定義されたレコードフォーマットを適用してデータセットの内容を自動的に構文解析することができる。
【００１２】
発明者らは、実施に際して、データセットの内容を構文解析するプログラムを書くことが仕事であるユーザが、データセット作成者の意図した通りに内容を解釈するために必ずしも適切なレコードフォーマットを知る必要が無いことを認識及び評価するに至った。データセットは、固定長及び／又は可変長フィールドを含むか否かに依らず、複数のデータフィールドを特定の仕方で集めたものと見なされることが多いため、このようなデータセットを構文解析するプログラムは、当該データセットを当該プログラムが適切に使用できるように、意図された解釈を考慮しつつ書かれていなければならない。このような解釈は一般に、単に内容を見ただけでは判定することができない。
【００１３】
発明者らは、区切られたデータフィールドを含むデータセットの場合、デリミタはデータセット内に存在しなければならず、且つデータセットの内容に基づいてユーザがデリミタを識別できるようにするユーザインタフェースを生成する技術が開発されなければならないことを認識及び評価するに至った。従来のいくつかのインタフェースは、共通に用いるデリミタ文字（例：カンマ）の所定のリストからユーザがデリミタを選択して、データセットの内容から複数のフィールドを、各々が当該文字により区切られたものとして解釈できるようにする場合がある。しかし、発明者らは、実施に際してデータセットが往々にして、多数の異なるデータフィールドデリミタを用いて、及び／又はデリミタとして一般的に使用されていない印刷不可能なバイト値又は文字を用いて解釈されるように構築されていることを認識するに至った。このようなデータセットを構文解析するのに適したレコードフォーマットを知らずに、データセットの内容を正しく解釈するようにユーザがデータ処理システムをプログラムすることは極めて困難であろう。ユーザがデリミタ候補を素早く選択して当該選択に基づいてデータセットの内容の解釈を見られるようにするインタフェースを有するツールを提供することにより、ユーザは、適切なレコードフォーマットを効率的に生成することができる。
【００１４】
いくつかの実施形態によれば、ツールは、各々がデータセットから文字を表し、且つデータセットに出現する順序で表示される多数のユーザインタフェース要素を含むユーザインタフェースを生成することができる。ユーザは、各々のユーザインタフェース要素と対話することによりツールへの入力を提供して、当該ユーザインタフェース要素が表す文字を、データフィールドのデリミタとして扱うべきか又は扱うべきでないかを伝えることができる。このような各々の対話の後で、ツールは、識別されたデリミタにより区切られているものと定義されたデータフィールドを含むレコードフォーマットを自動的に生成することができる。データセットの内容の一部又は全部を構文解析して、レコードフォーマットに従いユーザインタフェース上に表示することができる。この新たに生成されたレコードを用いてデータセットを構文解析して得られる効果は次いで、ユーザインタフェースを介したユーザによる視覚的検査により、及び／又はツールによる自動化された解析により調べることができる。従って、選択された文字がデリミタであるか否かを素早く決定することができる。文字はデータセットに出現するのと同じ順序で表示されるため、ユーザは、どの文字がデリミタ候補であるかを容易に識別することができ、且つツールの対応するユーザインタフェース要素と対話することにより、データセットの生成に用いるレコードフォーマットが決定される時点までに新たなレコードフォーマットを素早く生成することができる。
【００１５】
いくつかの実施形態によれば、ツールのユーザインタフェースは、選択されたデリミタにより定義されるレコードフォーマットを用いて構文解析されるデータセット内容のプレビューを含んでいてよい。このプレビューは、表示されたデリミタのいずれかが選択されているか又は選択されていない場合に自動的に生成されても、又は表示されたデリミタ（例：「リフレッシュ」ボタン）以外のユーザインタフェース要素との対話に応答して再生成されてもよい。いずれの場合も、データセットの表示された文字列からデリミタを選択又は選択解除するユーザが、データセットの内容を構文解析したならばその効果を素早く確認して、ある文字が不適切にデリミタとして選択されたか否か、又はデリミタとして選択すべき別の選択解除された文字があるか否かを判定することができる。このような処理の例について以下により詳細に議論する。
【００１６】
本明細書で用いるデータセットの「文字」は、印刷可能又は印刷不可能な文字であってよく、データセット内で任意の数のビット又はバイトとして表すことができる。例えば、アスキー文字は１バイトで表すことができ、印刷可能な文字（例：アルファベット文字、数字等）及び印刷不可能な文字（例：ゼロのバイト値）を含んでいてよい。代替的に、いくつかのデータセットは、複数のバイトを解釈して１文字を表す文字セットを用いて読み出すことができる。例えば、ＵＴＦ−８文字は、１、２、３又は４バイトで表すことができ、印刷可能な文字又は印刷不可能な文字であり得る。データセットは、本明細書に記述する技術が上記に限定されないため、任意の適当な文字セットを用いて解釈することができる。ユーザインタフェースは印刷不可能な文字を、文字バイト値（例：タブ文字の場合「￥ｘ０９」）（本明細書中では、
【数１】
2020530629.tif 000003
を「￥」と表記する）を表示する、又は文字の速記表現（例：タブ文字の場合「ＴＡＢ」又は「￥ｔ」）の表示を含む任意の適当な仕方で表すことができる。
【００１７】
いくつかの実施形態によれば、データセットの文字を表す各々の表示されたユーザ要素の初期選択状態が、ユーザインタフェースの初期生成に基づき予め決定されていてよい。すなわち、ユーザ要素の各々が最初は選択状態又は非選択状態のいずれであるか予め決定されていてよい。いくつかの実施形態において、ヒューリスティクスをデータセットに適用して、どの文字がデリミタであるかを最初に定性的に推定することができ、ユーザインタフェースの対応するユーザインタフェース要素が最初に選択されるよう生成されてよいのに対し、他の文字は最初に選択されないように生成されてよい。当該方式は従って、デリミタを選択する際の開始点をユーザに提供することができるため、ユーザが適切なレコードフォーマットを決定するのに要する時間を短縮することができる。
【００１８】
以下に、データレコードフォーマットを動的に定義する技術に関する各種の概念、及びその実施形態をより詳細に記述する。本明細書に記述する各種の態様が多数の仕方のいずれにより実施されてもよいことを理解されたい。特定の実装方式の例について以下に説明目的でのみ示す。また、以下の実施形態に記述する各種態様は、単独で、又は任意の組み合わせで用いられてよく、且つ以下に明示的に記述する組み合わせに限定されない。
【００１９】
図１に、いくつかの実施形態による、定義されたレコードフォーマットに基づいてデータセットをシステムが構文解析する処理を示す。処理１００は、レコードフォーマットを用いたデータセットを構文解析する一例として説明目的で提供されている。処理１００の例において、位置Ａにいるユーザ１５１が、「正準」レコードフォーマットを用いて構文解析されることを意図されたデータセット１０１を生成する。位置Ｂにいるユーザ１５２がデータ１０２を受信するが、ユーザ１５２が直ちに理解できるものではない。図１の例におけるユーザ１５２は、システム１０３により実行される構文解析エンジンを動作させてレコードフォーマット１０４を入力として読み込み、データセットの部分が特定のレコード及び当該レコードのデータフィールド値に関連付けられているデータ構造１０５を生成する。説明を簡潔にすべく、図１の例におけるレコードフォーマット１０４は比較的単純であるが、一般的には、意図したようにデータセットを正しく構文解析するのに必要なレコードフォーマットははるかに複雑であって、数十又は数百個のフィールドを含んでいてよい。
【００２０】
図１の例において、データセット１０１は、特定の仕方で解釈されるべく構成されており、すなわち各レコードが新たな線により分離されていて、各レコード内にカンマで区切られた２つのデータフィールドがある。このような解釈の仕方は、本明細書において「正準」レコードフォーマットと称するレコードフォーマットにより定義することができる。図１の例において、ユーザ１５２は、「フィールド１」をカンマで区切られたフィールド、及び「フィールド２」を改行で区切られたフィールドで定義する正準レコードフォーマット１０４を決定又は別途これにアクセスできるため、当該レコードフォーマットに基づいてデータセットを適切に構文解析する。図１に示すレコードフォーマットは、実際には任意の適当な方法でプログラミング的に表現されていてよい。
【００２１】
レコードフォーマット１０４を用いてデータセット１０１を構文解析する際に、コンピュータ実装された構文解析エンジンは以下の仕方で動作することができる。最初に、構文解析エンジンは、文字「，」のデータセットの文字を調べることにより第１レコードの「フィールド１」の値を決定することができる。例えば、システムは、文字「，」のバイト値が識別されるまでフラットファイル又はデータベーステーブル等のデータセットからバイト列を読み出すことができる。データセット内で当該文字が（文字「２」〜「Ｄ」の間で）で見つかったならば、先行する文字を第１レコードの「フィールド１」の値として識別することができ、構文解析エンジンは次いで改行文字（略号「￥ｎ」で表される場合がある）のデータセットの後続する文字を調べることにより、「フィールド２」の値を決定することができる。システムは、（例：コンピュータメモリ内の）レコードのデータ構造を作成して、決定された各フィールドの値を当該データ構造にそのまま挿入することができる。（「ｓ」〜「９」の間に）文字「￥ｎ」が見つかったならば、先行する文字は第１レコードの「フィールド２」の値として識別され、構文解析エンジンは次いで第２レコードで「フィールド１」の値の決定を試みることができる。この処理は、データセット内の全ての文字が読まれるまで続けられてよく、システムのレコードデータ構造はデータセットからのデータで充足されている。
【００２２】
デリミタを用いてデータセットを構文解析する際に重要なのはデータ内でデリミタが欠落していないことであり、欠落していれば構文解析エンジンは永久にデータフィールドの終端を見つけられないか、又はデータセットの作成者がレコードの他のデータフィールド内に置こうとした値を含むデータフィールド値を生成する恐れがある。同様に、データファイルに出現しない文字で区切られたデータフィールドを含むとしてレコードフォーマットが不正確に定義されている場合、構文解析エンジンは永久にデータフィールドの終端を見つけられないであろう。図２にこの問題の一例を示しており、ユーザは正準レコードフォーマットを知らずに、２つの異なる「暫定」レコードフォーマットをテストして、いずれが正準レコードフォーマットにマッチするかを決定することができる。
【００２３】
図２の例において、レコードフォーマット２１０を用いて、且つレコードフォーマット２２０を用いてデータセット２０１が解析されている。レコードフォーマット２１０は正準レコードフォーマットに合致しているためデータセット２０１のフォーマットを適切に記述しているのに対し、レコードフォーマット２２０はそうではない。レコードフォーマット２２０は、タブで区切られたフィールド（タブを記号「￥ｔ」と表記）を含むが、カンマで区切られたフィールドを含み、データセット２０１は第２のフィールドをカンマデリミタでは定義しないが、データセットの先頭の数個の文字はカンマを含んでいる。構文解析されたデータセット２２２は従って以下のように作成される。
【００２４】
最初に、構文解析エンジンを実行するシステムは、データセットの第１の文字から始めてタブ文字のデータセットの文字を調べることにより、第１レコードの「フィールド１」の値を決定する。最初に遭遇したタブ文字は「１」の後、且つ「Ａ」の前に位置する。当該文字がデータセットの先頭と識別されたデリミタとの間に存在する唯一のものであるため、「フィールド１」の値は従って「１」であると定義される。「Ａ」の後、且つ「Ｂ」の前にあるカンマ文字を求めてデータセットの後続文字を調べることにより、次いで第１レコードの「フィールド２」の値が決定される。従って「フィールド２」の値が「Ａ」であると定義される。構文解析エンジンの実行に際して、「フィールド２」の値の識別により第１レコードが終了し、エンジンは次いで第２レコードの第１フィールドを識別する処理を開始する。構文解析エンジンは、タブ文字の第１レコード終端の後（カンマの後）のデータセットの文字を調べることにより、第２レコードの「フィールド１」の値を決定する。これは、文字「２」の後、且つ文字「Ｘ」の前で見つかり、その結果「フィールド１」の値は従って「Ｂ及びＣ￥ｎ２」と定義され、ここに「￥ｎ」は改行文字を表す。次いで、第２レコードの「フィールド２」の値が、カンマ文字を求めてデータセットの後続文字を調べることにより決定されるが、そのような文字は存在しない。その結果、構文解析エンジンは、第２レコードの「フィールド２」データフィールドの境界を決定することができない。これは、データフィールドが所定の最大フィールドサイズを超えたことが分かった、或いはメモリ又はバッファのオーバフローエラーが発生した、のいずれかによりエラーを生じさせる場合がある。いずれの場合も、データセットは当該データセット作成者が意図した通りには構文解析されない。
【００２５】
図２に示すエラーに直面したユーザは従来、エディタ又は他の閲覧アプリケーションを用いてデータを調べ、視覚的検査に基づいて観察したエラーの根本原因を突き止めようとするであろう。図２には比較的簡単な例を示しているが、レコードフォーマットは数十又は数百個のデータフィールドを含んでいる場合があるため、そのような作業が極めて困難になる。候補として不適当なデリミタが識別されたならば、ユーザは新たに暫定レコードフォーマットを（例：適切な位置に新たなデリミタをタイプ入力することにより）作成し、構文解析エンジンを動作させて新たなレコードフォーマットを用いてデータセットを再び構文解析する必要がある。このような処理は不正確でエラーが生じやすく、且つ時間がかかる。
【００２６】
いくつかの場合において、構文解析エンジンが、図２に示す、及び上で述べたような種類のエラーが生じることなく首尾よくデータセットを構文解析することができるものの、データセット作成者が意図したものとは別の特定のフィールドに値が割り当てられる恐れがある点に注意されたい。例えば、図２の例において、改行で区切られた単一フィールドを有する暫定レコードフォーマットによりエラー無しにデータセット２０１が構文解析されるものの、結果的に生じた構文解析済みデータセットは、当該データセット作成者が意図した各レコードにデータを含んでいない。そのような場合、構文解析済みのデータセットを含むデータ構造に対する動作の間、引き続きエラーが生じる恐れがある。
【００２７】
本明細書に記述するツールが正準レコードフォーマットを決定すべく動作し得る方法を示すため、いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別できるユーザインタフェースを図３Ａ〜Ｃに示す。適当なシステムが本明細書に記述するようにツールを実行して、図示するユーザインタフェースを部分的に生成することができる。更に、当該ツールは後述するように、構文解析エンジンを実行させることができる。
【００２８】
図３Ａに、データセットからの文字列を示すユーザインタフェース要素３１０を含むユーザインタフェース３００の初期状態を示す。ユーザインタフェース要素３１０内の単一の文字を示すべく描かれた各々の正方形は、選択状態又は非選択状態にあり得る独立したユーザインタフェース要素である。データセットの一部をユーザインタフェース要素３２０に示すと共に、多数のレコード及びユーザインタフェース要素３１０のうちから選択されたデリミタに従い生成された暫定レコードフォーマットを用いてデータセットを構文解析することにより生成されたデータフィールドをユーザインタフェース要素３３０として示している。図示するユーザインタフェースにおいて、デリミタとして選択されたユーザインタフェース要素３１０に示す文字が強調表示及びグレーに陰影付けされているのに対し、非選択文字は白く陰影付けされている。従ってレコードフォーマットを定義する初期段階を表していてよい図３Ａに示す例ではデリミタは選択されていない。
【００２９】
図３Ａに示すユーザインタフェース３００を閲覧しているユーザは、識別されたデリミタ（デリミタが未だ選択されていないため現時点ではデータフィールド値が無いことを示す）を用いてデータセットの構文解析結果を視覚的に検査することができる。ユーザは、ユーザインタフェース要素３２０のデータを視認して、（例：文字「−」が複数回出現することに気付くことにより）選択されていない候補として適当なデリミタを識別し、且つ候補として不適当なデリミタ（例：文字「／」）を識別することができる。
【００３０】
いくつかの実施形態によれば、ユーザは、レコードフォーマットを変更するために、ユーザインタフェース要素３１０の１つと（例：マウスポインタで要素をクリックすることにより）対話して状態を選択状態から非選択状態、又は逆向きに変更することができる。ツールにより実行された構文解析エンジンは次いで、データセットを再び構文解析して結果をユーザインタフェース要素３３０に示すことができる。この動作は、ユーザがユーザインタフェース要素３１０の状態を変更したことに応答して実行されても、又はユーザが図示しない別のユーザインタフェース要素（例：選択されたデリミタに従い新たなレコードフォーマットを生成し、当該レコードフォーマットを用いてデータセットを再び構文解析することによりユーザインタフェース３３０の内容を再生成するボタン）と対話したことに応答して実行されてもよい。
【００３１】
図３Ｂに、ユーザが図３Ａに示すインタフェースと対話してユーザインタフェース要素文字「；」、「−」、「｜」及び「￥ｎ」の状態を非選択から選択状態に変えた後のユーザインタフェース３００の状態を示す。これらの状態の変化に応答して、又はユーザインタフェースを介した他の何らかの命令に起因して、ユーザインタフェース３００生成ツールは、デリミタの新たな組に基づいて新たなレコードフォーマットを生成し、新たに生成されたレコードフォーマットを用いて再度データセットを構文解析した。新たなレコードフォーマットを用いたデータセットの構文解析結果を、当該結果を反映すべくユーザインタフェース生成ツールにより更新されたユーザインタフェース要素３３０に示す。
【００３２】
整合性のあるデータを含み、且つエラーが生じていないように見える多数のフィールドの値をユーザインタフェース要素３３０が示しているため、ユーザはここで、デリミタの選択されたグループがデータセットを適切に構文解析したことを視覚的に確認できる。いくつかの実施形態において、ツールはレコードのサブセットを表示すべく選択することができる。いくつかの場合において、ツールは当該サブセットを表示すべくレコードの一部だけを構文解析してもよい。いくつかの実施形態において、レコードのサブセットは、ユーザが多数のレコードを調べられるようにするユーザインタフェース３００が提供するインタフェース要素により、データセットが最初から最後まで完全に構文解析されることを保証すべく、データセット全体にわたり選択されてよい。例えば、ユーザインタフェース３００は、データセットの先頭、中央及び／又は末尾からレコードを示しても、及び／又は選択されたデリミタを用いたデータセットの構文解析により生成されたレコード全体にわたるスクロール動作をユーザが行うことができる制御を提供してもよい。生成されたレコードフォーマットを用いてレコードの一部（例：先頭１０個のレコード、先頭５つのレコード及び末尾５つのレコード等）を構文解析することにより、ユーザが効率的に、データセット全体を構文解析する必要無しに、生成されたレコードフォーマットが適切にデータセットを構文解析することを視覚的に確認することができる。ユーザはこれにより効率的に、適切なデリミタを選択し、適切な構文解析を確認して、結果的に生じたレコードフォーマットを記録することができる。
【００３３】
上述の処理の結果、ユーザインタフェース３００生成ツールにより、ユーザは有限個の選択からデリミタの適切な組を選択することができた。このデリミタの組により暫定レコードフォーマットが生成され、暫定レコードフォーマットが正準レコードフォーマットに合致するか否かをユーザが確定できるようにユーザインタフェースを介してフィードバックが提供された。提示されるデリミタの選択がデータセット自体からのものであるため、正準レコードフォーマットのデリミタは当該選択内に存在しなければならない。更に、デリミタの選択又は選択解除、及びデリミタの新たな組を反映する新たな暫定レコードフォーマットの生成は、単一のユーザインタフェース要素との対話（例：マウスクリック）に限定することができる。最後に、新たに生成された暫定レコードフォーマットを用いてデータセットの構文解析結果の素早いフィードバックを提供することにより、ユーザは、デリミタの変化がデータを構文解析する仕方に及ぼす影響について直接フィードバックを得ることができる。合わせて、これらの利点から（潜在的に複雑な）レコードフォーマットを素早く正確に決定できる処理が得られる。
【００３４】
図３Ｃに、図３Ｂのデリミタの代替的選択を示す。図３Ｃは、図３Ｃの選択されたデリミタ文字が図３Ａのユーザインタフェースと対話したユーザにより選択された図３Ａの後の状態を表していてよい。代替的に、図３Ｃは、選択されたデリミタが、ユーザインタフェース３００を生成するシステムにより自動的に選択されているレコードフォーマットを定義する際の初期段階であってよい。上述のように、ヒューリスティクスをデータセットに適用して最初に正しいデリミタを推定することにより、ユーザにデリミタを選択する際の開始点を提供することができる。図３Ｃで選択されたデリミタは、以下に例を挙げるヒューリスティクスを介して選択されていてよい。
【００３５】
図３Ｃの例において、データセットのデリミタとして文字「／」が選択されているが、当該文字はデータセットの先頭数個の文字のうちに出現するにも拘わらず、当該文字がデータセット全体を通じてデリミタとしては用いられない。更に、「Ａ」、「Ｂ」又は「Ａ／Ｂ」に後続する値から名前を分離すべくデータセットで用いる文字「−」はデリミタとして選択されていない。その結果、ユーザインタフェース要素３３０に示す第１レコードの先頭３つのフィールドが「第１フィールド」の値を「ＩＤ」として適切に識別するのに対し、後続フィールドはデータセット作成者が意図したものとは別の情報を含んでいる。
【００３６】
図３Ａの例において、図示する選択されたデリミタの不適切な組は、最大フィールドサイズを超える第２レコードの「フィールド２」の決定された値に起因してエラー（三角形の警告記号で示す）が生じている。これによりユーザに対して、現在選択されているデリミタの組が、データセット全体を構文解析するには適当な組ではないことを示す追加的なフィードバックが提供される。他の場合において、図示するように異なるデリミタの組ではデータが首尾よく構文解析されたためエラーが生じないが、ユーザは、ユーザインタフェース要素３３０を視覚的に検査して、図示するデータセットの構文解析済みフィールドの値を調べることにより、レコードフォーマットが意図したものではないことを識別することができる。
【００３７】
図４に、いくつかの実施形態による、ユーザがレコードフォーマットのデリミタを識別して、生成されたレコードフォーマットを視認できるユーザインタフェースを示す。ユーザインタフェース４００は、図３Ａ〜３Ｃに示すユーザインタフェース３００のいくつかの特徴を共有しているが、追加的な制御を提供し、ユーザインタフェース３００に示す情報を異なる仕方で提示している。図３の例と同様に、適当なシステムが本明細書に記述するようにツールを実行することができ、図４に示すユーザインタフェースが部分的に得られる。更に、ツールは、後述するようにユーザインタフェースと連携して構文解析エンジンを実行することができる。
【００３８】
図４の例において、ユーザインタフェース４００は、データセットからの文字列を示すユーザインタフェース要素４２０を含んでいる。単一文字を表すユーザインタフェース要素４２０の各々の描画された正方形は、独立したユーザインタフェース要素である。データセットの一部をユーザインタフェース要素４１０に示し、ユーザインタフェース要素４２０のうちから選択されたデリミタに従いデータセットを構文解析することにより生成される多数のレコード及びデータフィールドをユーザインタフェース要素４４０として示す。デリミタとして選択されたユーザインタフェース要素４２０のうちからのユーザインタフェース要素は図４で強調表示及びグレーに陰影付けされ、選択されていない文字は白く陰影付けされている。また、ユーザインタフェース要素４３０は、ユーザインタフェース要素４２０のうちから選択されたデリミタに基づいてシステムにより生成された暫定レコードフォーマットを表す。ユーザインタフェース要素４３０が示す直近に生成されたレコードフォーマットは、データセットを解析してユーザインタフェース要素４４０に示すレコードを生成すべく用いるレコードフォーマットである。
【００３９】
図４の例において、ユーザインタフェース要素４２０は、スクロールバーを有するユーザインタフェース要素内に含まれるため、データセットのいくつかの文字がユーザインタフェース４００に表示されているのに対し、スクロールバーの操作によりデリミタとして表示及び選択できる追加的な文字がある。いくつかの実施形態において、スクロールバーを動かすことで、データセットから追加的文字をロードさせることができる。例えば、システムは、最初にデータセットの先頭Ｎ文字を取り出して、これらの文字に対してＮ個のユーザインタフェース要素を生成できるが、スクロールバーを右へ動かした場合、システムはデータセットの当該Ｎ文字に後続する追加的文字を取り出して、対応する追加的なユーザインタフェース要素を生成することができる。追加的な文字を取り出す当該処理は、スクロールバーが終端まで動かされる都度繰り返すことができる。このように、ユーザがデリミタを選択する際に、不要な計算動作を最小限に抑えるべく、データセットの任意の個数の文字を見ることができ、当該文字は、事前にではなく、ユーザ操作により通知される必要個数だけ取り出されてよい。
【００４０】
図４の例において、ユーザインタフェース要素４１０は、データセットから多数のレコードを示しており、特定のレコード終端デリミタがデータセットをレコードに分解するとみなされる。いくつかの実施形態において、レコード終端デリミタは、改行文字（ＡＳＣＩＩバイト値０ｘ０Ａ）、又はキャリッジリターン文字と改行文字の組み合わせ（ラインフィードとも称する）文字（ＡＳＣＩＩバイト値０ｘ０Ｄ０Ａ）とみなすことができる。他の実施形態において、レコード終端デリミタは、ユーザインタフェース要素４２０のうちから現在選択されている最後のデリミタであるとみなすことができる。
【００４１】
図４の例において、ユーザインタフェース要素４１０に示すレコード（これら自体も個々のユーザインタフェース要素により示されていてよい）は選択されていてよく、ユーザインタフェース要素４２０は、デリミタとして選択すべく選択されたレコードからの文字を表示すべく生成されていてよい。デリミタの以前の選択は、要素４１０内の選択されたレコードが変化した際に維持されてよい、すなわちユーザインタフェース要素４２０内の選択されたデリミタのグループは最初に、選択されたレコードが変わる前にユーザインタフェース要素４２０内で選択されたものと同じ文字に設定されてよい。これにより、ユーザは別のレコード内で選択されたデリミタを視覚的に検査することができる。
【００４２】
動作に際して、図示するユーザインタフェース４００を実行するツールは、ユーザインタフェース要素４２０を介して識別されたデリミタの選択に従い新たな暫定レコードフォーマットを生成する（例：選択されたデリミタの組が変化する都度新たなレコードフォーマットを生成する）。「適用」ボタン４３２の起動又は他の方法により、ツールにより実行される構文解析エンジンにより新たな暫定レコードフォーマットを用いてデータセットを構文解析することができ、前記構文解析結果がユーザインタフェース要素４４０に示される。直近に生成されたレコードフォーマットを用いたツールによるデータセットの構文解析を、ユーザインタフェース要素４２０により示す任意の文字の選択／非選択状態の変化に応答して、及び／又は「適用」ボタン４３２の起動に応答して実行してよい。
【００４３】
図示するユーザインタフェース４００は、起動されたならば、全ての文字をデリミタとして選択解除する「クリア」ボタン４２２を含んでいる。インタフェース４００はまた、起動時にヒューリスティクスを適用してデータに合致し得るデリミタの組を決定する「サジェスト」ボタン４２４を含んでいる。これらのヒューリスティクスは、適切な文字の組を生成する場合もあれば、生成しない場合もあるが、デリミタの組を決定しようとするユーザに少なくとも開始点を提供するために用いることができる。このようなヒューリスティクスの例について後述する。
【００４４】
図５は、いくつかの実施形態による、ユーザインタフェースを介したデリミタのユーザ選択に基づいて暫定レコードフォーマットを決定する方法のフロー図である。方法５００は、図３Ａ〜Ｃ及び図４に各々示すユーザインタフェース３００、４００を含むがこれらに限定されないユーザインタフェースを生成する本明細書に記述するようなツールを実行するシステムにより実行されてよい。上述のように、データセットは、一人のユーザ（例：図１のユーザ１５１）により正準レコードフォーマットを用いて作成されてよいが、データにアクセスしている異なるユーザ（例：図１のユーザ１５２）は当該レコードフォーマットを知らない可能性があるため、本明細書に記述するツールを用いて、正準レコードフォーマットを決定する前に多数の暫定レコードフォーマットを生成してもよい。方法５００は、第１の暫定レコードフォーマットが生成されていて、デリミタ文字が選択されているか又は選択されていない、及び第２の暫定レコードフォーマットが生成される当該処理の一部を示す。
【００４５】
方法５００は、第１の暫定レコードフォーマットに従いツールにより実行される構文解析エンジンによりデータセットを構文解析する動作５０４から始まる。データセットは、方法５００を実行するシステムにアクセス可能な任意の個数の非一時的コンピュータ可読媒体に配置されていても、又は外部システムから受信したデータストリームとして提供されてもよい。いくつかの場合においてデータセットは、１つ以上の揮発性及び／又は不揮発性のコンピュータ可読記憶媒体に保存されたファイルであってよい。いくつかの場合においてデータセットは、データベース内に保存されたデータであってよい（例：データセットはテーブル又はデータベースのビューであってよい）。データセットが保存される方法又は場所に依らず、方法５００を実行するシステムは、動作５０４で構文解析エンジンを実行して第１の暫定レコードフォーマットに従いデータセットを構文解析することにより、レコード及びデータフィールドを含むデータ構造を生成する。第１の暫定レコードフォーマットは、いくつかの場合において、未だにデリミタが選択されていない場合は空であるか又は別途未定義レコードフォーマットであってよい。他の場合において、第１の暫定レコードフォーマットは、レコードを互いに分離する単一の区切られたフィールド（例：「￥ｎ」デリミタ）を含んでいてよいが、各レコード内で別個のフィールドを識別しなくてもよい。
【００４６】
動作５０６において、データセットの構文解析結果を、データセットからの文字列と共にユーザインタフェースを介して表示する。データセットの構文解析結果の表示が、動作５０４で生成されたレコード及び／又はデータフィールドの一部又は全部の表示を含んでいてよく、且つデータセットの構文解析に関連したエラーメッセージ又は他のフィードバックメッセージ等の追加的な結果のユーザインタフェースを介した表示を含んでいてよい。動作５０６で表示された文字列は、当該文字がデータセットに出現する順序に合致する順序でユーザインタフェースに表示されてよい。
【００４７】
いくつかの例において、動作５０６で表示された文字列の各文字のユーザインタフェースにおける選択又は非選択状態は、第１の暫定レコードフォーマットに従い決定されてよい。すなわち、第１の暫定レコードフォーマットにより定義された、区切られたフィールドは、ユーザインタフェースに示されているデータセットのどの文字がデリミタとして選択されているかを示唆していてよく、これらの文字は選択された状態にあることを動作５０６でユーザインタフェースに表示することができる。ユーザインタフェースにおいて選択された状態は、選択された文字を選択されていない文字と視覚的に区別する任意の視覚的方式又は方式群を含んでいてよい。
【００４８】
動作５０８において、ユーザは、文字列の１つを非選択状態から選択状態に、又は選択状態から非選択状態に変化させるユーザインタフェースへの入力を提供することができる。この入力は、任意の適当な入力機器を用いて、且つ任意の適当な仕方で（例：マウス又は他の入力機器を用いてユーザインタフェース要素をクリックすることにより）提供することができる。動作５１０において、第２の暫定レコードフォーマットが、表示された文字列のうちから選択されたデリミタの組に基づいてシステムにより生成される（動作５０８で生じた前記組の変化を含む）。選択された当該デリミタの組は、動作５０８で選択された１文字を含んでいるか、又は動作５０８で選択されなかった文字を含んでいない。従って、第２の暫定レコードフォーマットが文字の追加的な選択又は選択解除無しに生成されたケースにおいて、第２の暫定レコードフォーマットは、動作５０８で選択された文字により区切られた追加的なデータフィールドを含んでいるか、又は動作５０８で選択解除された文字により区切られたデータフィールドを含んでいないことにより、第１の暫定レコードフォーマットとは異なっていてよい。このフィールドを除けば、２つのレコードフォーマットは同一であってよい。
【００４９】
動作５１２において、第２の暫定レコードフォーマットに従いツールにより実行される構文解析エンジンによりデータセットを構文解析する。方法５００を実行するシステムは、第２レコードフォーマットに従いデータセットを構文解析することにより構文解析エンジンを実行してレコード及びデータフィールドを含むデータ構造を生成する。動作５１４において、動作５１２でユーザインタフェースを介してデータセットの内容の構文解析結果を表示する。データセットの構文解析結果の表示が、動作５１２で生成されたレコード及び／又はデータフィールドの一部又は全部の表示を含んでいてよく、且つデータセットの構文解析に関連したエラーメッセージ又は他のフィードバックメッセージ等の追加的な結果のユーザインタフェースを介した表示を含んでいてよい。
【００５０】
方法５００が、直近に生成されたレコードフォーマットをユーザが受理するまで、任意の回数だけ繰り返されてよいことが理解されよう。いくつかの実施形態において、ユーザインタフェースは従って、起動時に、方法５００を含む処理で次のステップへ進む１つ以上の制御を含んでいてよい。このような次のステップは、メタデータリポジトリ又は他のデータストア（例：データベース）の受理されたレコードフォーマットの記録及び／又は受理されたレコードフォーマットを用いてデータセットが構文解析されるデータフローグラフの実行を含んでいてよい。
【００５１】
図６は、いくつかの実施形態による、ヒューリスティクスを適用して初期レコードフォーマットを生成するレコードフォーマットを生成する方法のフロー図である。方法６００は、本明細書に記述するようなツールにより実行することができる。いくつかの実施形態において、方法６００は、区切られたデータセットだけに限定されないユーザからの入力を促すことによりデータセットのレコードフォーマットを生成するシステムにより実行されてよい。いくつかの場合において、システムは、データセットの解析を実行してどのようなデータフィールドが存在するか、及びどのような処理が適切なレコードフォーマットの生成に最適であるかを決定することができる。例えば、改行文字で分離された一定個数の文字を反復的に含むデータセットは、ユーザインタフェースを介したユーザ入力に基づいてレコードフォーマットを生成すべく起動される固定長フィールド及び処理だけを含むとみなされてよい。代替的に、デリミタ候補文字の多数のインスタンスを含むデータセットは、複数の区切られたフィールドを有するデータセットとして識別され、従ってレコードフォーマットは本明細書に記述する技術を介して生成されてよい。
【００５２】
方法６００は動作６０２で始まり、レコードフォーマットが生成されるデータセットが複数のデリミタを含む、従って当該レコードフォーマットが本明細書に記述する技術を介して生成されてよいと判定する。デリミタ候補が、データに出現した場合にデリミタであるとみなされる文字のリストから識別することができる。非限定的な例として、デリミタ候補は、英数字でない全ての文字、スペース、引用符、ピリオド、スラッシュ（例：「／」又は「￥」）又はハイフン文字を含んでいてよい。デリミタ候補の当該リストは従って、大多数の典型的なデータ文字を除外しており、例えば業務データには典型的に見出されない文字の繰り返されるインスタンスを探す。このようなアプローチが、改行文字等の印刷不可能な文字をデリミタ候補とみなす点に注意されたい。
【００５３】
動作６０２において、データセットにヒューリスティクスを適用することにより、第１レコードフォーマットを生成する。いくつかの実施形態によれば、動作６０２で識別されたデリミタ候補の１つにより各々区切られたデータフィールドを含む第１レコードフォーマットを生成することができる。いくつかの実施形態によれば、データファイル内にデリミタ候補が出現する頻度を解析してレコードフォーマットのデリミタを選択することができる。例えば、データセット内で他のデリミタ候補よりも顕著に多く出現するデリミタ候補が誤ってデリミタとして識別されていた可能性がある。いくつかの実施形態によれば、レコードが改行文字（又はキャリッジリターン及び改行文字）で終端するとみなすことができる。いくつかの実施形態によれば、構文解析エンジンは、候補レコードフォーマットがデータセットを完全に構文解析（すなわちデータセットをレコードの完全な数に構文解析）するか否かを判定して、デリミタの組がデータセットを構文解析するための適切な組であるか否かを判定することができる。レコードフォーマットがデータセットを完全に構文解析しない場合、当該デリミタの組が適切なものではないことを示す。
【００５４】
動作６０４で第１レコードフォーマットがどのように生成されたかに依らず、動作６０６において方法５００を実行して、デリミタとして文字の選択及び／又は選択解除に従い新たなレコードフォーマットを生成する。動作６０６は、デリミタの現在の組にユーザが満足するまで任意の回数繰り返されてよく、満足したならば動作６０８において最終的なレコードフォーマットを記録してよい。
【００５５】
図７は、本明細書に記載する技術を実施することができる適宜のコンピューティングシステム環境７００の一例を図示する。コンピューティングシステム環境７００は、適宜のコンピューティング環境の一例にすぎず、本明細書に記載する技術の使用又は機能性の範囲に関して何ら制限を示唆することを意図したものではない。コンピューティング環境７００は、例示的動作環境７００に図示されるコンポーネントの何れか１つ又は組み合わせに関する依存性又は要件を有すると解釈されるべきものでもない。
【００５６】
本明細書に記載する技術は、多数の他の汎用又は専用コンピューティングシステムの環境又は構成と共に使用可能である。本明細書に記載する技術と共に使用するのに適し得る周知のコンピューティングシステム、環境、及び／又は構成の例には、限定されることはないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスの何れかを包含する分散コンピューティング環境などが包含される。
【００５７】
コンピューティング環境は、プログラムモジュールなどのコンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが包含される。本明細書に記載する技術は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実行されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを包含するローカル及びリモートコンピュータストレージ媒体の両方に位置していてもよい。
【００５８】
図７を参照して、本明細書に記載する技術を実施する例示的システムは、コンピュータ７１０の形態の汎用コンピューティングデバイスを包含する。コンピュータ７１０のコンポーネントは、限定されないが、処理装置７２０、システムメモリ７３０、及びシステムメモリを包含する様々なシステムコンポーネントを処理装置７２０に結合するシステムバス７２１を包含してもよい。システムバス７２１は、様々なバスアーキテクチャの何れかを使用した、メモリバス又はメモリコントローラ、周辺バス、及びローカルバスを包含する幾つかのタイプのバス構造の何れかであってもよい。例として、及び限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、及びメザニンバスとしても知られるペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスが包含される。
【００５９】
コンピュータ７１０は、一般的に、様々なコンピュータ可読媒体を包含する。コンピュータ可読媒体は、コンピュータ７１０によってアクセスすることができる任意の入手可能な媒体でよく、及び揮発性及び不揮発性両方の媒体、リムーバブル及び非リムーバブル媒体を包含する。例として、及び限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含んでもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報のストレージのための任意の方法又は技術で実施される、揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を包含する。コンピュータストレージ媒体には、限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は所望の情報を保存するために使用することができ、且つコンピュータ７１０によってアクセスすることができるその他の媒体が包含される。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを搬送波又は他のトランスポート機構などの変調データ信号で具現化し、及びあらゆる情報配信媒体を包含する。「変調データ信号」という用語は、それの特性集合の１つ又は複数を有する、又は信号の情報をエンコードするように変更された信号を意味する。例として、及び限定ではなく、通信媒体には、有線ネットワーク又は直接有線接続などの有線媒体、及び音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体が包含される。上記の何れかの組み合わせも、コンピュータ可読媒体の範囲内に包含されるものとする。
【００６０】
システムメモリ７３０は、読み出し専用メモリ（ＲＯＭ）７３１及びランダムアクセスメモリ（ＲＡＭ）７３２などの揮発性及び／又は不揮発性メモリの形態のコンピュータストレージ媒体を包含する。起動時などに、コンピュータ７１０内の素子間で情報を転送することを助ける基本ルーチンを含有した、基本入出力システム７３３（ＢＩＯＳ）は、一般的に、ＲＯＭ７３１内に保存される。ＲＡＭ７３２は、一般的に、即座に利用できる、及び／又は処理装置７２０によって現在操作されているデータ及び／又はプログラムモジュールを含有する。例として、及び限定ではなく、図７は、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７を図示する。
【００６１】
コンピュータ７１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージ媒体も包含することができる。単なる例として、図７は、非リムーバブル、不揮発性磁気媒体に対する読み取り又は書き込みを行うハードディスクドライブ７４１、リムーバブル、不揮発性磁気ディスク７５２に対する読み取り又は書き込みを行う磁気ディスクドライブ７５１、及びＣＤ−ＲＯＭ又は他の光学媒体などのリムーバブル、不揮発性光ディスク７５６に対する読み取り又は書き込みを行う光ディスクドライブ７５５を図示する。例示的動作環境において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージ媒体には、限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが包含される。ハードディスクドライブ７４１は、一般的に、インタフェース７４０などの非リムーバブルメモリインタフェースを通してシステムバス７２１に接続され、及び磁気ディスクドライブ７５１及び光ディスクドライブ７５５は、一般的に、インタフェース７５０などのリムーバブルメモリインタフェースによってシステムバス７２１に接続される。
【００６２】
上述した、及び図７に図示したドライブ及びそれらに関連付けられたコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ７１０の他のデータのストレージを提供する。図７においては、例えば、ハードディスクドライブ７４１は、オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７を保存するものとして図示される。これらのコンポーネントは、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７と同じであってもよいし、或いは異なっていてもよいことに留意されたい。オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７は、少なくとも、それらが異なるコピーであることを図示するために、ここでは、異なる番号が付与されている。ユーザは、キーボード７６２及び一般にマウス、トラックボール、又はタッチパッドと呼ばれるポインティングデバイス７６１などの入力デバイスによって、コンピュータ７１０にコマンド及び情報を入力することができる。他の入力デバイス（不図示）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが包含され得る。これら及び他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース７６０によって、処理装置７２０に接続されることが多いが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェース及びバス構造によって接続されてもよい。モニタ７９１又は他のタイプのディスプレイデバイスも、ビデオインタフェース７９０などのインタフェースを介して、システムバス７２１に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース７９５を通して接続することができる、スピーカ７９７及びプリンタ７９６などの他の周辺出力デバイスも包含することができる。
【００６３】
コンピュータ７１０は、リモートコンピュータ７８０などの１つ又は複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作することができる。リモートコンピュータ７８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又は他の共通ネットワークノードでもよく、及び一般的に、図７ではメモリストレージデバイス７８１のみが図示されているが、コンピュータ７１０に関連して上記した素子の多く又は全てを包含する。図７に描かれる論理接続は、ローカルエリアネットワーク（ＬＡＮ）７７１及び広域ネットワーク（ＷＡＮ）７７３を包含するが、他のネットワークも包含してもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて、ありふれたものである。
【００６４】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ７１０は、ネットワークインタフェース又はアダプタ７７０を通してＬＡＮ７７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ７１０は、一般的に、モデム７７２、又はインターネットなどのＷＡＮ７７３上で通信を確立するための他の手段を包含する。内部又は外部のものでもよいモデム７７２は、ユーザ入力インタフェース７６０又は他の適宜の機構を介して、システムバス７２１に接続されてもよい。ネットワーク化環境において、コンピュータ７１０に関連して描かれたプログラムモジュール、又はそれらの一部は、リモートメモリストレージデバイスに保存されてもよい。例として、及び限定ではなく、図７は、メモリデバイス７８１に常駐しているとして、リモートアプリケーションプログラム７８５を図示する。示されるネットワーク接続は、例示的なものであり、及びコンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されるだろう。
【００６５】
本発明の少なくとも１つの実施形態の幾つかの態様を上記のように記載したが、様々な変更、修正、及び改良が、当業者には容易に思い付くことが理解されるものとする。
【００６６】
このような変更、修正、及び改良は、本開示の一部であることが意図され、及び本発明の精神及び範囲内であることが意図される。さらに、本発明の利点が示されるが、本明細書に記載の技術の全ての実施形態が、全ての記載した利点を包含するわけではないことが理解されるものとする。幾つかの実施形態は、本明細書において有利であると記載された何れの特徴も実施しない場合があり、場合によっては、記載された特徴の１つ又は複数が、さらなる実施形態を得るために実施されてもよい。従って、上記の記載及び図面は、単なる例である。
【００６７】
いくつかの態様によれば、データセットのレコードフォーマットを決定する方法を提供し、当該データセットは複数のバイトを含み、本方法は、本方法は、少なくとも１つのコンピューティング装置により、第１レコードフォーマットを用いてデータセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該第１レコードフォーマットに従い当該文字列を用いて１つ以上のデータフィールドの値を決定するステップと、ユーザインタフェースを介して当該第１レコードフォーマットに従い１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、当該文字列の複数個を、当該ユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信するステップと、当該受信した入力に基づいて第２レコードフォーマットを生成し、且つ当該第２レコードフォーマットが当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップと、当該第２レコードフォーマットを用いて当該データセットの一部を構文解析するステップと、当該第２レコードフォーマットを用いて当該データセットの一部の前記構文解析結果を当該ユーザインタフェースを介して表示するステップと、当該第２レコードフォーマットを記録すべきであることを示すユーザ入力を受信するステップと、当該第２レコードフォーマットを少なくとも１つのコンピュータ可読媒体に記録するステップを含んでいる。
【００６８】
いくつかの実施形態によれば、複数の文字列の表示が、文字列の隣接するサブセットを当該ユーザインタフェース要素列としてユーザインタフェースを介して表示するステップを含んでいてよく、サブセットの各文字は別個のユーザインタフェース要素として順次提示される。
【００６９】
いくつかの実施形態によれば、本方法は、メモリオーバフローを識別することにより、又は１つ以上の空のデータフィールドを含む構文解析済みのレコードを識別することにより、第２レコードフォーマットがデータセットの完全な構文解析は行わないことを決定するステップを更に含んでいてよく、第２レコードフォーマットを用いたデータセットの構文解析結果のユーザインタフェースを介した表示が、第２レコードフォーマットがデータセットを完全に構文解析しない旨の警告の表示を含んでいる。
【００７０】
いくつかの実施形態によれば、本方法は、１つ以上のヒューリスティクスに少なくとも部分的に基づいて第１レコードフォーマットを決定して１つ以上の文字をデリミタ候補として識別するステップを更に含んでいてよい。
【００７１】
いくつかの実施形態によれば、第１レコードフォーマットを決定するステップは、英数字でないデータセットの文字、スペース、引用符、ピリオド、前方スラッシュ又はハイフンを識別し、識別された文字により区切られた第１レコードフォーマットのデータフィールドを生成するステップを含んでいてよい。
【００７２】
いくつかの実施形態によれば、第１文字は印刷不可能な文字であってよい。
【００７３】
いくつかの実施形態によれば、第１レコードフォーマットは、区切られたデータフィールドだけを含んでいてよい。
【００７４】
いくつかの実施形態によれば、ユーザ入力は、少なくとも１つのコンピューティング装置に、ユーザインタフェースにおける選択されたユーザインタフェース要素の外観を変えさせてよい。
【００７５】
いくつかの実施形態によれば、ユーザインタフェースを介して第１レコードフォーマットを用いてデータセットの前記構文解析結果を表示するステップが、データセットのレコード及び当該レコードのデータフィールド値のリストの表示を含んでいてよい。
【００７６】
いくつかの実施形態によれば、第１レコードフォーマットは、複数の異なるデリミタを有する複数の区切られたデータフィールドを含んでいてよい。
【００７７】
いくつかの態様によれば、少なくとも１つのプロセッサと、少なくとも１つのユーザインタフェース装置と、プロセッサにより実行可能な命令を含む少なくとも１つのコンピュータ可読媒体を含むコンピュータシステムを提供し、当該命令が実行されたならば、当該少なくとも１つのプロセッサに、第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析させて当該複数のバイトにより表された文字列を決定させると共に、当該第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定させ、当該少なくとも１つのユーザインタフェース装置を介して、当該第１レコードフォーマットの当該１つ以上のデータフィールドの値の少なくともいくつかを当該少なくとも１つのユーザインタフェースを介して表示させ、当該少なくとも１つのユーザインタフェース装置を介して、当該文字列の複数個を、当該少なくとも１つのユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示させ、当該少なくとも１つのユーザインタフェース装置を介して、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信させ、当該受信した入力に基づいて第２レコードフォーマットを生成させ、但し当該第２レコードフォーマットが当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成させ、当該第２レコードフォーマットを用いて当該データセットの一部を構文解析させ、当該第２レコードフォーマットを用いて当該データセットの一部の前記構文解析結果を当該ユーザインタフェースを介して表示させ、当該第２レコードフォーマットを記録すべきであることを示すユーザ入力を受信させ、当該第２レコードフォーマットを少なくとも１つのコンピュータ可読媒体に記録させる。
【００７８】
いくつかの実施形態によれば、複数の文字列の表示が、文字列の隣接するサブセットを当該ユーザインタフェース要素列としてユーザインタフェースを介して表示するステップを含んでいてよく、サブセットの各文字は別個のユーザインタフェース要素として順次提示される。
【００７９】
いくつかの実施形態によれば、プロセッサ実行可能命令は更に、少なくとも１つのプロセッサに、メモリオーバフローを識別することにより、又は１つ以上の空のデータフィールドを含む構文解析済みのレコードを識別することにより、第２レコードフォーマットがデータセットの完全な構文解析は行わないことを決定させてよく、第２レコードフォーマットを用いたデータセットの構文解析結果のユーザインタフェースを介した表示が、第２レコードフォーマットがデータセットを完全に構文解析しない旨の警告の表示を含んでいる。
【００８０】
いくつかの実施形態によれば、プロセッサ実行可能命令は更に、少なくとも１つのプロセッサに、１つ以上のヒューリスティクスに少なくとも部分的に基づいて第１レコードフォーマットを決定させて１つ以上の文字をデリミタ候補として識別させてよい。
【００８１】
いくつかの実施形態によれば、第１レコードフォーマットを決定するステップは、英数字でないデータセットの文字、スペース、引用符、ピリオド、前方スラッシュ又はハイフンを識別し、識別された文字により区切られた第１レコードフォーマットのデータフィールドを生成するステップを含んでいてよい。
【００８２】
いくつかの実施形態によれば、第１レコードフォーマットを決定するステップは、データレコードデリミタを識別するステップを含んでいてよい。
【００８３】
いくつかの実施形態によれば、ユーザ入力は少なくとも１つのプロセッサに、ユーザインタフェースにおける先頭のユーザインタフェース要素の外観を変えさせてよい。
【００８４】
いくつかの実施形態によれば、少なくとも１つのユーザインタフェース装置を介して第１レコードフォーマットを用いて当該データセットの前記構文解析結果を表示するステップは、データセットのレコード及びレコードのデータフィールド値のリストの表示を含んでいてよい。
【００８５】
いくつかの実施形態によれば、第１レコードフォーマットは、複数の異なるデリミタを有する複数の区切られたデータフィールドを含んでいてよい。
【００８６】
いくつかの態様によれば、少なくとも１つのプロセッサと、第１レコードフォーマットを用いて複数のバイトを含むデータセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該第１レコードフォーマットに従い１つ以上のデータフィールドの値を決定する手段と、当該少なくとも１つのユーザインタフェースを介して当該第１レコードフォーマットの１つ以上のデータフィールドの値の少なくともいくつかを表示する手段と、当該少なくとも１つのユーザインタフェースを介して、当該文字列の一部を、当該ユーザインタフェース要素の列として、且つ当該文字列の一部の各文字が別個のユーザインタフェース要素として順次提示されるように表示する手段と、当該ユーザインタフェース要素列の第１のユーザインタフェース要素に関連付けられたユーザ入力であって当該第１のユーザインタフェース要素が当該文字列の第１の文字に関連付けられているユーザ入力を受信する手段と、当該受信した入力に基づいて第２レコードフォーマットを生成し、且つ当該第２レコードフォーマットが当該第１の文字により区切られたデータフィールドを含むように生成する手段と、当該第２レコードフォーマットを用いて当該データセットの一部を構文解析する手段と、当該第２レコードフォーマットを用いて当該データセットの一部の前記構文解析結果を、ユーザインタフェースを介して表示する手段と、当該第２レコードフォーマットを記録すべきであることを示すユーザ入力を受信する手段と、当該第２レコードフォーマットを少なくとも１つのコンピュータ可読媒体に記録する手段を含むコンピュータシステムを提供する。
【００８７】
いくつかの態様によれば、データセットのレコードフォーマットを決定する方法を提供し、当該データセットは複数のバイトを含み、本方法は、少なくとも１つのコンピューティング装置により反復的にユーザ入力を受信するステップと、当該ユーザ入力に基づいてレコードフォーマットを生成するステップを含み、前記反復的処理は直近に生成されたレコードフォーマットを出力する旨を示すユーザ入力を受信するまで継続され、前記反復的処理は、初期レコードフォーマットを用いて当該データセットを構文解析して当該複数のバイトにより表された文字列を決定すると共に、当該初期レコードフォーマットに従い当該１つ以上のデータフィールドの値を決定するステップと、ユーザインタフェースを介して当該初期レコードフォーマットに従い当該１つ以上のデータフィールドの値の少なくともいくつかを表示するステップと、当該文字列の複数個を、当該ユーザインタフェースを介して当該ユーザインタフェース要素の列として、且つ当該複数の文字の各々が別個のユーザインタフェース要素として提示されるように表示するステップと、当該ユーザインタフェース要素列のユーザインタフェース要素を選択するユーザ入力であって選択されたユーザインタフェース要素が当該文字列の文字に関連付けられているユーザ入力を受信するステップと、当該受信した入力に基づいて後続レコードフォーマットを生成し、且つ当該後続レコードフォーマットが、当該選択されたユーザインタフェース要素に関連付けられた文字により区切られたデータフィールドを含むように生成するステップと、直近に生成されたレコードフォーマットを出力する旨を示すユーザ入力を受信したならば反復的処理を終了するステップと、直近に生成されたレコードフォーマットを少なくとも１つのコンピュータ可読媒体に記録するステップを反復することを含んでいる。
【００８８】
本明細書に記載の技術の上記実施形態は、多数のやり方の何れで実施されてもよい。例えば、これらの実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを用いて実施されてもよい。ソフトウェアで実施される場合には、ソフトウェアコードは、単一のコンピュータにおいて提供されていようと、複数のコンピュータ間で分散されていようと、任意の適宜のプロセッサ又は一群のプロセッサ上で実行することができる。このようなプロセッサは、集積回路として実施されてもよく、業界において、ＣＰＵチップ、ＧＰＵチップ、マイクロプロセッサ、マイクロコントローラ、又はコプロセッサなどの名称で知られている市販の集積回路コンポーネントを包含する集積回路コンポーネントにおいて、１つ又は複数のプロセッサを有する。代替的に、プロセッサは、ＡＳＩＣなどのカスタム回路、又はプログラマブル論理デバイスの構成に起因するセミカスタム回路において実施されてもよい。またさらなる代替手段として、プロセッサは、市販、セミカスタム、或いはカスタムであろうと、より大きな回路又は半導体デバイスの一部であってもよい。ある具体例として、幾つかの市販のマイクロプロセッサは、複数のコアの１つ又はサブセットがプロセッサを構成することができるように、複数のコアを有する。しかし、プロセッサは、任意の適宜のフォーマットの回路を使用して実施することができる。
【００８９】
さらに、コンピュータは、ラックマウント式コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータなどの多数の形態の何れかで具現化されてもよいことが理解されるものとする。追加的に、コンピュータは、携帯情報端末（ＰＤＡ）、スマートフォン、又は任意のその他の適宜のポータブル又は固定電子デバイスを包含する、一般にコンピュータとは見なされないが、適宜の処理能力を備えたデバイスに組み込まれてもよい。
【００９０】
また、コンピュータは、１つ又は複数の入力デバイス及び出力デバイスを有していてもよい。これらのデバイスは、特に、ユーザインタフェースを提示するために使用することができる。ユーザインタフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的表現のためのプリンタ又はディスプレイスクリーン、及び出力の可聴表現のためのスピーカ又は他の音生成デバイスが包含される。ユーザインタフェースに使用することができる入力デバイスの例には、キーボード、並びにマウス、タッチパッド、及びデジタイザタブレットなどのポインティングデバイスが包含される。別の例として、コンピュータは、音声認識により、又は他の可聴フォーマットで入力情報を受信してもよい。
【００９１】
このようなコンピュータは、企業ネットワーク又はインターネットなどのローカルエリアネットワーク又は広域ネットワークとして包含する、任意の適宜の形態の１つ又は複数のネットワークによって相互接続することができる。このようなネットワークは、任意の適宜の技術に基づいてもよく、及び任意の適宜のプロトコルに従って動作してもよく、及び無線ネットワーク、有線ネットワーク、又は光ファイバネットワークを包含してもよい。
【００９２】
また、本明細書に概要が述べられる様々な方法又はプロセスは、様々なオペレーティングシステム又はプラットフォームの何れか１つを用いる１つ又は複数のプロセッサに対して実行可能なソフトウェアとして符号化されてもよい。追加的に、このようなソフトウェアは、多数の適宜のプログラミング言語及び／又はプログラミング又はスクリプト作成ツールの何れかを使用して書かれてもよく、及びフレームワーク又は仮想マシンに対して実行される実行可能マシン語コード又は中間コードとしてコンパイルされてもよい。
【００９３】
この点において、本発明は、１つ又は複数のコンピュータ又は他のプロセッサに対して実行されると、上述の本発明の様々な実施形態を実施する方法を行う１つ又は複数のプログラムでエンコードされたコンピュータ可読ストレージ媒体（又は複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１つ又は複数のフロッピーディスク、コンパクトディスク（ＣＤ）、光ディスク、デジタルビデオディスク（ＤＶＤ）、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ又は他の半導体デバイスにおける回路構成、又は他の有形コンピュータストレージ媒体）として具現化されてもよい。上記の例から明らかなように、コンピュータ可読ストレージ媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間の間、情報を保持することができる。このような１つ又は複数のコンピュータ可読ストレージ媒体は、それ（ら）に保存された１つ又は複数のプログラムを、上述のような本発明の様々な態様を実施するために、１つ又は複数の異なるコンピュータ又は他のプロセッサにロードすることができるように、可搬であってもよい。本明細書においては、「コンピュータ可読ストレージ媒体」という用語は、製品（すなわち、製造物）又はマシンであると見なすことができる非一時的コンピュータ可読媒体のみを網羅する。代替的又は追加的に、本発明は、伝搬信号などの、コンピュータ可読ストレージ媒体以外のコンピュータ可読媒体として具現化されてもよい。
【００９４】
「プログラム」又は「ソフトウェア」という用語は、本明細書では、上述のような本発明の様々な態様を実施するようにコンピュータ又は他のプロセッサをプログラムするために使用することができる、あらゆるタイプのコンピュータコード又はコンピュータ実行可能命令のセットを指すために総称的に使用される。追加的に、本実施形態のある態様によれば、実行されると、本発明の方法を行う１つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに常駐する必要はなく、本発明の様々な態様を実施するために、多数の異なるコンピュータ又はプロセッサ間で、モジュラー方式で分散されてもよいことが理解されるものとする。
【００９５】
コンピュータ実行可能命令は、１つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態のものでもよい。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが包含される。一般的に、プログラムモジュールの機能性は、様々な実施形態において、要望通りに組み合わせられてもよいし、或いは分散されてもよい。
【００９６】
また、データ構造は、任意の適宜の形態でコンピュータ可読媒体に保存されてもよい。図示を簡単にするために、データ構造は、データ構造内の場所によって関連したフィールドを有して示される場合がある。このような関係は、同様に、フィールドのストレージにフィールド間の関係を伝達するコンピュータ可読媒体内の場所を割り当てることによって、達成することができる。但し、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用によることを包含する、任意の適宜の機構を使用して、データ構造のフィールドにおける情報間の関係を確立してもよい。
【００９７】
本発明の様々な態様は、単独で、組み合わせて、又は上記に記載した実施形態において具体的に述べられていない様々な配置で使用されてもよく、従って、その適用において、上記の説明に記載された、又は図面に図示されたコンポーネントの詳細及び配置に限定されない。例えば、ある実施形態に記載した態様は、任意の様式で、他の実施形態に記載した態様と組み合わせることができる。
【００９８】
また、本発明は、一例を提供した方法として具現化されてもよい。この方法の一部として行われるアクトは、任意の適宜のやり方で、順序付けが行われてもよい。従って、アクトが、図示されたものとは異なる順序で（これは、説明のための実施形態では、逐次的なアクトとして示されたとしても、幾つかのアクトを同時に行うことを包含してもよい）行われる実施形態が構築されてもよい。
【００９９】
さらに、幾つかの行為は、「ユーザ」によって行われると記載される。「ユーザ」は、一人の個人である必要はなく、及び幾つかの実施形態では、「ユーザ」に帰する行為は、複数の個人から成るチーム及び／又はコンピュータ支援ツール又は他の機構と組み合わせた個人によって行われてもよいことが理解されるものとする。
【０１００】
クレーム要素を修飾する、クレームにおける「第１の」、「第２の」、「第３の」などの序数用語の使用は、それ自体は、１つのクレーム要素の別のクレーム要素に対する優先、先行、又は順序、又は方法のアクトが行われる時間的順序を暗示せず、ある名称を有する１つのクレーム要素を、同じ名称（序数用語の使用を除き）を有する別の要素と区別するための単なるラベルとして使用することにより、これらのクレーム要素が区別される。
【０１０１】
また、本明細書において使用される表現及び用語は、説明目的のものであり、及び限定として見なされるものではない。本明細書における、「包含する（ｉｎｃｌｕｄｉｎｇ）」、「含む（ｃｏｍｐｒｉｓｉｎｇ）」、又は「有する（ｈａｖｉｎｇ）」、「含有する（ｃｏｎｔａｉｎｉｎｇ）」、「関与する（ｉｎｖｏｌｖｉｎｇ）」、及びそれらのバリエーションの使用は、その後にリストされるアイテム及びそれらの均等物、並びに追加のアイテムを網羅することを意味する。
【符号の説明】
【０１０２】
１０１  データセット
１０４  レコードフォーマット
１５１  ユーザ
１５２  ユーザ
２０１  データセット
２１０  レコードフォーマット
２２０  レコードフォーマット
４００  ユーザインタフェース
７４０  インタフェース
７４１  ハードディスクドライブ
７４４  オペレーティングシステム
７４５  アプリケーションプログラム
７４６  プログラムモジュール
７４７  プログラムデータ
７５０  インタフェース
７５１  磁気ディスクドライブ
７５２  不揮発性磁気ディスク
７５５  光ディスクドライブ
７５６  不揮発性光ディスク
７６０  ユーザ入力インタフェース
７６１  ポインティングデバイス
７６２  キーボード
７７０  アダプタ
７７１  ＬＡＮ
７７２  モデム
７７３  ＷＡＮ
７８０  リモートコンピュータ
７８１  メモリデバイス
７８５  リモートアプリケーションプログラム
７９０  ビデオインタフェース
７９１  モニタ
７９５  出力周辺インタフェース
７９６  プリンタ
７９７  スピーカ
【図１】
2020530629.tif 000004
【図２】
2020530629.tif 000005
【図３Ａ】
2020530629.tif 000006
【図３Ｂ】
2020530629.tif 000007
【図３Ｃ】
2020530629.tif 000008
【図４】
2020530629.tif 000009
【図５】
2020530629.tif 000010
【図６】
2020530629.tif 000011
【図７】
2020530629.tif 000012
【国際調査報告】
2020530629.tif 000013
2020530629.tif 000014
2020530629.tif 000015