Q語言:新型的數據定義語言
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語言已經有了一些實現:
Q 語言官網:http://www.q-lang.io/
Github 地址:https://github.com/blambeau/q-lang
來自: www.iteye.com
<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!