Как мне построить предметно-ориентированный язык запросов? - PullRequest
10 голосов
/ 18 ноября 2009

У меня есть база данных биологии, которую я хотел бы запросить. Есть также определенный банк терминологии, к которому у меня есть доступ, который имеет формализуемые предикаты. Я хотел бы построить язык запросов для этой БД, используя упомянутые предикаты. Как бы вы пошли об этом? Мое решение следующее:

  1. формализовать предикаты
  2. перевести на язык запросов (sql, sparql, зависит)
  3. Создание определенного языка с помощью ANTLR или других подобных инструментов
  4. Перевести с 3 на 2.

Это правильный подход? Есть ли лучшие? Любые указатели будут высоко оценены.

Ответы [ 4 ]

5 голосов
/ 18 ноября 2009

Взгляните на Booleano .

4 голосов
/ 18 ноября 2009

Используйте BNF, чтобы получить преимущество в семантике языка. GoldParser поможет вам, поиграв с семантикой и синтаксисом (ссылка здесь: http://www.devincook.com/). Как только вы разберетесь с семантикой BNF, вы можете затем создайте действия на основе входных данных, например, раздел грамматики bnf, посвященный извлечению композиции из классификации генетического состава конечности (я не знаю, существует ли она, абстрактный пример здесь, но вы понимаете суть) для конкретного запрос ... «получить статистику по конечности, где конечность - это нога», а затем за кулисами вы можете выполнить SQL-выбор по псевдониму или имени столбца из предопределенной таблицы ... Я могу ошибаться при подходе ... Надеюсь, это помогает?

2 голосов
/ 11 января 2010

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

Вероятно, сначала трудно понять все, но посмотрите на ячейку CRC или веб-сервис, и вы увидите, как они подошли к генерации SQL из клинического графического языка запросов интересным способом (хотя и не таким уж благоприятным для производительности) :))

0 голосов
/ 16 июля 2014

Рассмотрите возможность использования Irony.NET здесь: Irony.NET

...