Q語言:新型的數據定義語言

jopen 10年前發布 | 6K 次閱讀 語言

  Q是一個數據語言,目前被限定為一個數據定義語言(DDL)。Q采用 JSON/XML 模式,其配備了一個專用的用于定義數據的類型系統,和一個稱為“信息合約”的理論,用于程序和數據交換語言之間的互操作。

  Q可以在很多需要獲取數據的地方,比如:

  • 要求可靠性和安全性(RESTful)的 Web 服務、配置文件、數據交換等
  • 驗證數據輸入,比如屏幕輸入或 HTML 表單輸入
  • 在接收數據時強制低級別類型向高級別轉換,消弱交換語言對類型系統的限制(比如 JSON 沒有內置的時間類型),并以安全和幾乎透明的方式提升抽象的級別
  • 可在 RESTful 資源定義、NoSQL 文檔數據庫中記錄數據類型和模式
  • 可在異構環境中映射數據類型,使得數據庫、不同的數據交換語言之間的互操作更好、更簡單
  • </ul>

      示例:

      如果要獲取醫療系統中一些病人的診斷信息,下面顯示了典型的 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
                        <span id="shareA4" class="fl">                          </span>
     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!