Существует ли общий язык запросов для произвольных множеств, независимых от языка программирования?

Я ищу способ определения запросов на множествах независимо от языка программирования или вида множеств.

Подробно это будет определение языка и реализации для распространенных языков, таких как Java, C++, Python и т. Д.

Как прокомментировано, я не ищу базу данных или какую-либо реализацию набора представлений, а только способ определить запрос для элементов, например, из std::set/vector питон set() или любая линейная структура, которая может рассматриваться как множество.

Близким примером будет что-то вроде jLinq, но без привязки к JSON или javascript и с четко определенным строковым представлением.

Конечно, не зная, какой структуры данных вам потребуется реализовать условный фильтр для каждой проблемы и каждого языка программирования, но способ построения строк запросов и их оценки будет понятен, и вам не придется писать парсеры.

Так что я хотел бы написать на Java или C++, что-то вроде

q = query()
.created_after("14.03.2010")
.and(contains("hello")
     .or(contains("hallo")))
.sort("caption")

или записано в виде строки:

"(created_after("14.03.2010") and ( contains("hello") or contains("hallo"))) sort("caption")"

(это не продумано - просто чтобы показать, как может выглядеть интерфейс)

Хорошим примером для другой проблемы может служить JSON или XML: четкое определение языка и парсеры / инструменты для любой платформы или языка программирования.

2 ответа

Я знаю, что это старый вопрос, но я думаю, что знаю, что вы имеете в виду, и я действительно искал что-то подобное. Что вам нужно, это "анализатор поисковых запросов".

Я нашел search-query-parser для nodejs (я не автор). Еще не пробовал, но выглядит многообещающе. Пример в документации очень наглядный, вы бы получили входную строку из пользовательского интерфейса

from:hi@retrace.io,foo@gmail.com to:me subject:vacations date:1/10/2013-15/04/2014 photos

И библиотека будет разбирать его на структурированный объект JSON

{
  from: ['hi@retrace.io', 'foo@gmail.com'],
  to: 'me',
  subject: 'vacations',
  date: {
    from: '1/10/2013',
    to: '15/04/2014'
    },
  text: 'photos'
}

И из этого объекта вы можете создать и выполнить команду запроса к вашей базе данных. Как видите, он обрабатывает списки и диапазоны. Прямо сейчас я не вижу никакого логического оператора (И, ИЛИ), но я думаю, что это может быть легко реализовано.

Надеюсь это поможет.

В наши дни RSQL — хороший вариант. Доступно множество парсеров, а запросы оптимизированы для URL.

Другие вопросы по тегам