Log4Classicning

好读书 不求甚解 每有会意 便欣然忘食

来看看JAQL
2008年5月2日

JAQL,A JSON Query Language。貌似是IBM支持的一个项目,旨在创造一种JSON的查询语言,吸取SQL、XQuery和PigLatin(不知道这个是什么)的优点,专用于JSON数据的读写和查询过滤等操作。

如,JAQL可以遍历一个本地文件中的JSON集合,输出一个投影:

  for $b in localRead('books')
  return {$b.publisher, $b.title};


或构建一个查询条件,如同SQL一样:

  for $b in localRead('books')
  where exists(for $r in $b.reviews
               where 'ben' in $r.discussion.[user]
               return true)
  return {$b.author, $b.title, $b.reviews};

其中discussion表示一个一对一的属性,而user是一个对多的属性,用[user]。和SQL一样,查询中还可以使用聚合函数。

支持SQL的GROUP,按book的publisher分组统计个数:

  group $b in localRead('books') by $p = $b.publisher into $pubs
  return {publisher: $p, num: count($pubs)};


对刚才获得的结果进行排序。

let $g = group $b in localRead('books') by $p = $b.publisher into $pubs
  return {publisher: $p, num: count($pubs)},  

$sorted = sort $i in $g by ($i.num desc)

return $sorted[0];


此外,JAQL还可以进行Join等操作。

  join $x in localRead('X') on $x.a,
       $y in localRead('Y') on $y.c
  return {$x.a, $x.b, $y.c, $y.d};


目前JAQL已经在Hadoop平台上简单实现了。

参考
JAQL: Jaql: A JSON Query Language

  • 相关文章:
« Classicning's FMSQLite的空间扩展SpatiaLite »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Search

站点统计

  • 文章总数:732
  • 评论总数:2568
  • 引用总数:4
  • 浏览总数:5693
  • 留言总数:42
  • 当前主题:ClassicningDailyLog Style
  • 当前样式:footoo

网站收藏

图标汇集

  • Creative Commons License
  • Widgetize!
  • visitor stats

Powered By Z-Blog 1.8 Spirit Build 80722

2004 - 2007 Classicning.com. 苏ICP备06039259号.