Q语言:新型的数据定义语言

jopen 10年前

  Q是一个数据语言,目前被限定为一个数据定义语言(DDL)。Q采用 JSON/XML 模式,其配备了一个专用的用于定义数据的类型系统,和一个称为“信息合约”的理论,用于程序和数据交换语言之间的互操作。

  Q可以在很多需要获取数据的地方,比如:

  • 要求可靠性和安全性(RESTful)的 Web 服务、配置文件、数据交换等
  • 验证数据输入,比如屏幕输入或 HTML 表单输入
  • 在接收数据时强制低级别类型向高级别转换,消弱交换语言对类型系统的限制(比如 JSON 没有内置的时间类型),并以安全和几乎透明的方式提升抽象的级别
  • 可在 RESTful 资源定义、NoSQL 文档数据库中记录数据类型和模式
  • 可在异构环境中映射数据类型,使得数据库、不同的数据交换语言之间的互操作更好、更简单

  示例:

  如果要获取医疗系统中一些病人的诊断信息,下面显示了典型的 JSON 数据格式文档和采用Q语言的获取方式。

  Json 代码

    {          "patient": {            "id": "27b3ceb0-7e10-0131-c9f1-3c07545ed162",            "name": "Marcia Delgados",            "dob": "1975-11-03"          },          "symptoms": [            "Nausea",            "Fever"          ],          "temperature": 39.5        }  

  下面是Q语言的实现方式:

  Q 代码

Temp = <celsius> Real ( f | f >= 33.0 and f <= 45.0 )        {          patient : {            id   : Uuid,            name : String ( s | s.size > 0 ),            dob  : Date ( d | alive: d.year > 1890 ),          },          symptoms : [ String ( s | s.size > 0 ) ],          temperature : Temp        }  

  实现

  目前Q语言已经有了一些实现:

  • Qrb:Q语言在 Ruby 中的实现
  • Qjs:Q语言在 JavaScript 中的实现(开发中)

  Q 语言官网:http://www.q-lang.io/

  Github 地址:https://github.com/blambeau/q-lang

来自: www.iteye.com