new jinqJs( { globalSettings... } )
		.from()                 <-- 1 to many arguments for union all
    	.on()            (Optional For inner joins)
    .union()
    .concat()
    .join()                 <-- 0 to many times
    	.on()
    .leftJoin()             <-- 0 to many times
    	.on()
        .fullJoin()		    <-- 0 to many times
          .on()
    .not()			    <-- Optionally used by .in()
    .in()
    .update()
    	.at()
    .delete()
    	.at()
    .where() || .filter()
    .groupBy()
    .sum()
    .count()
    .avg()
    .min()
    .max()
    .distinct()
    .orderBy()
    .identity()
    .skip()
    .top()
    .bottom()
    .select()

As shown, some of these functions can be called multiple times, some can call a predicate, some can take custom JSON objects to have more of granular effect and in special cases the from() function can be executed asynchronously or synchronously. The jinqJs object relies heavily on function chaining. Methods are called one after another in a top down fashion. Using jinqJs you can query collections and you can also perform in-place updates on collections similar to SQL.