В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Парадигма | мультипарадигмальный , логико-парадигмальный , объектно-ориентированный |
---|---|
Разработчик | Семмле |
Впервые появился | 2007 |
Дисциплина печати | статичный , сильный |
Основные внедрения | |
SemmleCode | |
Под влиянием | |
Журнал данных |
.QL (произносится как «точка-ку-эль») — это объектно-ориентированный язык запросов, используемый для извлечения данных из реляционных систем управления базами данных . Он напоминает стандартный язык запросов SQL и объектно-ориентированный язык программирования Java . .QL — это объектно-ориентированный вариант логического языка запросов, называемого Datalog . Поэтому иерархические данные могут быть естественным образом запрошены в .QL рекурсивным образом.
Запросы, написанные на .QL, оптимизируются, компилируются в SQL и затем могут быть выполнены в любой крупной системе управления реляционными базами данных. Язык запросов .QL используется в SemmleCode для запроса реляционного представления программ Java.
.QL разработан в Semmle Limited и основан на собственной технологии компании.
.QL имеет несколько языковых функций, позволяющих сделать запросы лаконичными, интуитивно понятными и пригодными для повторного использования:
Пример запроса ниже иллюстрирует использование .QL для запроса программы Java. Вот как можно выбрать все классы, которые содержат более десяти публичных методов:
из класса c, int numOfMethods где numOfMethods = count(Метод m| m.getDeclaringType()=c и m.hasModifier("public")) и numOfMethods > 10 выберите c.getPackage(), c, numOfMethods
Фактически, этот запрос выбирает не только все классы с более чем десятью открытыми методами, но также соответствующие им пакеты и количество методов, которые есть у каждого класса.