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

Database 如何构建特定于域的查询语言?,database,dsl,Database,Dsl,我想查询一个生物学数据库。我还可以访问一个给定的术语库,它具有可形式化的谓词。我想使用前面提到的谓词为这个数据库构建一个查询语言。你会怎么做?我的解决方案如下: 将谓词形式化 转换为查询语言(sql、sparql、DEVIDES) 使用ANTLR或其他类似工具构建特定语言 把3译成2 这是一种有效的方法吗?有更好的吗?任何指针都将不胜感激。使用BNF可以在语言语义方面领先一步。..GoldParser将帮助您处理语义和语法(链接此处:)。一旦你理清了BNF语义,你就可以根据输入建立动作,例如,一

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

  • 将谓词形式化
  • 转换为查询语言(sql、sparql、DEVIDES)
  • 使用ANTLR或其他类似工具构建特定语言
  • 把3译成2

  • 这是一种有效的方法吗?有更好的吗?任何指针都将不胜感激。

    使用BNF可以在语言语义方面领先一步。..GoldParser将帮助您处理语义和语法(链接此处:)。一旦你理清了BNF语义,你就可以根据输入建立动作,例如,一个BNF语法部分,处理提取肢体基因组成分类的成分(我不知道是否存在,这里是抽象示例,但你得到了要点)对于特定的查询…“获取limb上的统计信息,其中limb是leg”,然后在幕后,您将对预定义表中的列别名或名称发出SQL select。。。我可能在方法上错了。。。希望它能有所帮助?

    看一看。

    我建议您看一看,它是一种用于患者数据库的图形查询语言和查询引擎平台


    首先可能很难掌握所有内容,但请看看其中的CRC单元或Web服务,您将看到它们是如何以一种有趣的方式从临床图形查询语言生成SQL的(尽管性能不太友好:))

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

    听起来像是一个有趣的项目。你的姓真的是Thunk吗?您必须与Haskell有天然的亲缘关系;)因此,您建议我先定义dsl的语法,然后再定义其他语法。也许这是正确的方向,它将指导剩下的努力。那是你的吗?谢谢是的,那是我的看法。很高兴能帮上忙!:)这个问题不是特定于语言的