如何构建特定于域的查询语言?

时间:2009-11-17 23:58:41

标签: database dsl

我有一个生物数据库,我想查询。还有一个我可以访问的术语库,它具有可形式化的谓词。我想使用提到的谓词为这个DB构建一个查询语言。你会怎么做?我的解决方案如下:

  1. 形式化谓词
  2. 翻译成查询语言(sql,sparql,depends)
  3. 使用ANTLR或其他此类工具构建特定语言
  4. 从3翻译为2.
  5. 这是一种有效的方法吗?还有更好的吗?任何指针都会非常感激。

4 个答案:

答案 0 :(得分:5)

看看Booleano

答案 1 :(得分:4)

使用BNF开始进入语言语义.GoldParser将通过使用语义和语法来帮助您(链接在这里:http://www.devincook.com/)。一旦你对BNF语义进行了整理,你就可以根据输入构建动作,例如,bnf语法部分处理提取肢体基因组成分类的组成(我不知道它是否存在,摘要这里的示例,但你得到了一个特定查询的要点...'在肢体是腿的肢体上获取统计数据',然后在幕后你将在列别名或预定义表中的名称上发出SQL选择...我方法可能是错的...希望它有帮助吗?

答案 2 :(得分:2)

我建议你看一下i2b2 framework,它是一个用于患者数据库的图形查询语言和查询引擎平台。

可能很难先掌握所有内容,但是看看那里的CRC单元格或网络服务,你会看到他们如何以一种有趣的方式从临床图形查询语言中接近SQL生成(尽管不是那么表现友好:))

答案 3 :(得分:-1)

从这里考虑使用Irony.NET:Irony.NET