Как создать язык запросов для домена?

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

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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