.QL (pronounced "dot-cue-el") is an object-oriented query language used to retrieve data from relational
database management system
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
s. It is reminiscent of the standard query language
SQL and the object-oriented programming language
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
. .QL is an object-oriented variant of a logical query language called
Datalog. Hierarchical data can therefore be naturally queried in .QL in a recursive manner.
Queries written in .QL are optimised, compiled into SQL and can then be executed on any major relational database management system. .QL query language is being used in
SemmleCode to query a relational representation of Java programs.
.QL is developed at Semmle Limited and is based on the company's proprietary technology.
Language features
.QL has several language features to make queries concise, intuitive and reusable:
* Extensible type hierarchy
* Methods and predicates
* Definition before use
Example query
The sample query below illustrates use of .QL to query a Java program. This is how one would select all classes that contain more than ten public methods:
from Class c, int numOfMethods
where numOfMethods = count(Method m, m.getDeclaringType()=c
and m.hasModifier("public"))
and numOfMethods > 10
select c.getPackage(), c, numOfMethods
In fact, this query selects not only all classes with more than ten public methods, but also their corresponding packages and the number of methods each class has.
See also
*
SQL - Structured Query Language
*
OQL - Object Query Language
*
Datalog - logic programming language
*
SemmleCode -
Software testing
Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
tool that uses .QL language
References
* Hervé Gallaire and Jack Minker. Logic and Databases. Plenum Press, New York,1978.
* Serge Abiteboul and Paris C. Kanellakis. Object identity as a query language primitive. In SIGMOD Rec, pages 159–173, ACM Press, 1989.
* Oege de Moor, Elnar Hajiyev and Mathieu Verbaere. Object-oriented queries over software systems. In Proceedings of the 2007 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation (PEPM), page 91, ACM Press, 2007.
External links
Semmle Limitedcreators of .QL
{{DEFAULTSORT:Ql
Declarative programming languages
Logic programming languages
Query languages
Data modeling languages