例
コマンドキャッシュ
以下の例ではプライベートデータベースに
Mathematica コマンドを保管し,Javaと
Mathematica からデータをクエリする方法について示します.
このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,
データベースの例の使用で述べているように
DatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
例題のコードは
DatabaseLink の
Examplesサブディレクトリからロードします.
コマンドキャッシュを使うと,
Mathematica 式をタイプセットされたボックス式としてデータベースに保管することができます.データベースにボックスを保管するときは
StoreCommandを使います.
| Out[2]= |  |
データベースからデータを取り出すときは
CommandCache[]を使います.
| Out[3]= |  |
各コマンドのいくつかの属性はデータベースに保管されます.各コマンドには,保管するときに生成されたIDが与えられます.式は完全形
FullFormでフォーマットされた文字列として保管されます.これにより,
Mathematica 内で式を再利用することが可能です.また,データが保管された時間と,式の画像も保存されます.
GetCommandAttributesを使うと属性名が得られ,これらの属性名は返されるデータをフィルタするのに使えます.
| Out[4]= |  |
| Out[5]= |  |
次の例では
Powerを含んでいるすべての結果を求めます.
| Out[6]= |  |
| Out[7]= |  |
| Out[8]= |  |
| Out[9]= |  |
このパッケージの別の機能に,データを見るためのJava GUIがあります.これにはデータを管理したり,ノートブックにデータをペーストしたりする機能があります.
| Out[10]= |  |
データベースに新しいコマンドが追加されると,GUIは自動的に更新されます.
同様に,コマンドが削除された場合もGUIは自動的に更新されます.
ClearCommandCacheはコマンドキャッシュにあるデータをすべて削除するときに使います.
| Out[12]= |  |
グラフデータベース
この例では
Mathematica で生成されたマテリアルを保管するデータベースについて示します.そのマテリアルとして,ここではグラフとグラフの数々の特性について取り上げます.グラフの数が特別多くなくても,これらのグラフの特性を生成するには非常に時間がかかります.このことから,計算結果の永続的な保管のために,データベースがいかに価値のあるものであるかが分かります.
グラフデータベースの使用
グラフデータベースを使用するには,パッケージをロードする必要があります.
最初にパッケージを使うときには,
RestoreGraphDatabaseコマンドを実行する必要があります.このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,次のコマンドも実行してください.これは実行に時間がかかることがありますが,実行する必要があるのは1度だけです.
データベースに保管されているグラフの特性は,
GraphProperties関数で得られます.
| Out[2]= |  |
これで,データベースからクエリが作成できます.これは
GraphQueryコマンドを使って行います.以下を実行すると,すべての完全な形のグラフが返されます.
| Out[3]= |  |
グラフに使われた形式は
Combinatorica パッケージで提供されているものです.これはグラフの図を描く他に,
Mathematica でさらに計算に使用できる記号オブジェクトも返します.
| Out[4]= |  |
次はハミルトングラフを求め,その直径,周囲の長さ,辺情報を返します.前述の例と同じように,グラフも描かれます.
| Out[5]= |  |
この例題パッケージの重要な点のひとつに,一般的なデータベースコマンドではなく,グラフを求めるための特有のコマンドを示しているということが挙げられます.データベースのインタラクションの詳細は,実装したものの中にあります.
グラフデータベースパッケージ
グラフデータベースパッケージには3つの関数があります.
| GraphProperties[] | データベース中のすべてのグラフ特性をリストする |
| GraphQuery[{props}] | データベース中でprops に合致するグラフを検索する |
| RestoreGraphDatabase[] | データベース中のデータをもとの状態に戻す(時間がかかる可能性あり) |
グラフデータベースパッケージの関数
RestoreDatabase関数はデータベース中のすべてのデータを計算し直すため,計算し終えるのに時間がかかることがあります.一般に,これはデータベースを破壊してしまったとき以外には実行しない方がよいでしょう.