作為一個全領域的知識圖譜,首先,需要考慮每一個領域的實體屬性都是有區別的,例如,人物類的實體有身高、體重這些屬性,而公司機構類的實體就沒有這些屬性。其次,隨著時間的推移,某些類型的實體還需要擴充新的屬性等等。傳統的關系型數據庫在解決這些問題時,明顯比較棘手。
經過一番選型,最后確定使用MongoDB作為存儲知識實體的數據庫。MongoDB基于文檔存儲,文檔采用JSON格式。實體數據入庫前需要轉成JSON文檔,并對文檔格式進行校驗。而針對JSON進行校驗的方案就是JSON-Schema。
JSON-Schema入門:
http://spacetelescope.github.io/understanding-json-schema/
JSON-Schema js版本的校驗工具:
https://github.com/ebdrup/json-schema-benchmark, #基準測試報告
https://github.com/epoberezkin/ajv 最終選這個
基于該工具,實現了一個在線版的json schema校驗工具:
http://www.kgopen.com/json-validate
JSON-Schema python版本的校驗工具:
https://github.com/Julian/jsonschema
JSON-Schema PHP版本校驗:
https://github.com/geraintluff/jsv4-php
JSON-Schema編輯工具:
http://www.kgopen.com/json-schema-editor #表格型的編輯工具
http://jsonschema.net/#/ #根據一段json文件,生成json-schema
這兩個工具思路不同,應用場景也不同。
其他:
- array 的 tuple validation 是否有必要?
是否用object代替array的tuple更合適些? - object的dependencies、pattern properties?