В настоящее время я работаю над улучшением JSON возможностей запросов с помощью Brackit [1] и [2], который является движком XQuery с дополнительными массивами и «записями». Сейчас я в основном следую тому же XDM, что и JSONiq, но, к сожалению, я не эксперт по XQuery. Полагаю, я более или менее перенял проект у Себастьяна и особенно добавил временные улучшения.
Brackit использует оператор разыменования =>
для записей / объектов, чтобы получить значение для имени.
Кроме того, он использует [[expr()]]
для поиска по индексу массива, я полагаю, точно так же, как чистая спецификация JSONiq.
Я уверен, что у вас есть веские причины вместо этого делать вызовы функции dynamici c, поэтому я мог бы должен изменить это. Тем не менее, я считаю, что оператор разыменования может работать во всех случаях, что, на мой взгляд, является более приятным синтаксисом.
Я думаю, что это идеальное решение - иметь компилятор запросов для полуструктурированных данных с проверенной оптимизацией для использования. в хранилищах данных: http://wwwlgis.informatik.uni-kl.de/cms/dbis/projects/brackit/mission/
Одной из решающих особенностей Brackit может быть конвейеризация выражений FLOWR для ориентированной на множество обработки.
добрые пожелания
Йоханнес
[1] https://github.com/sirixdb/brackit
[2] http://wwwlgis.informatik.uni-kl.de/cms/fileadmin/publications/2013/Dissertation-Baechle.pdf