| .QL | |
|---|---|
![]() | |
| パラダイム | マルチパラダイム、論理パラダイム、オブジェクト指向パラダイム |
| 開発者 | セムレ |
| 初登場 | 2007 |
| タイピングの規律 | 静的、強い |
| 主要な実装 | |
| セムルコード | |
| 影響を受けた | |
| データログ | |
.QL(「ドットキューエル」と発音)は、リレーショナルデータベース管理システムからデータを取得するために使用されるオブジェクト指向クエリ言語です。標準クエリ言語であるSQLやオブジェクト指向プログラミング言語であるJavaを彷彿とさせます。.QLは、 Datalogと呼ばれる論理クエリ言語のオブジェクト指向版です。そのため、.QLでは階層的なデータに対して再帰的なクエリを自然に実行できます。
.QL で記述されたクエリは最適化され、SQL にコンパイルされて、主要なリレーショナル データベース管理システムで実行できます。SemmleCode では、.QL クエリ言語を使用して、 Java プログラムのリレーショナル表現をクエリします。
.QL は Semmle Limited で開発されており、同社の独自の技術に基づいています。
.QL には、クエリを簡潔かつ直感的で再利用可能にするための言語機能がいくつかあります。
以下のサンプルクエリは、.QLを使用してJavaプログラムをクエリする方法を示しています。これは、10個を超えるパブリックメソッドを含むすべてのクラスを選択する方法です。
Class c 、int numOfMethodsから、numOfMethods = count ( Method m | m . getDeclaringType ( ) = cかつm . hasModifier ( "public" ))かつnumOfMethods > 10を選択して、 c . getPackage ()、c 、numOfMethods を実行します。実際、このクエリは 10 個を超えるパブリック メソッドを持つすべてのクラスを選択するだけでなく、対応するパッケージと各クラスが持つメソッドの数も選択します。