Live data from Hacker News

SpahQL - A query language for Javascript objects

angryamoeba.co.uk

21–30 of 37 posts

Re: SpahQL - A query language for Javascript objects

#21

Earlier quoted context omitted.

Can you unpack that question a little for me? As in, could you use a spahql selection as the path component of some request? I don't see why not, but the escaping will probably look a little ugly.

Given a url that returns JSON: www.example.com/data.json, one could append SparQL to select a subset www.example.com/data.json/user www.example.com/data.json/categories/* www.example.com/data.json/categories/0/products www.example.com/data.json//avatar

That's a pretty interesting idea, and I see no reason why it shouldn't work.

Re: SpahQL - A query language for Javascript objects

#22

I wish developers would stop copying SQL. It's like making fancy new languages, and then adding libraries that help you emulate COBOL. SQL is not the first, the last, or the best query language ever created, it's just the best marketed. It's not even properly relational, it's based on a series of shell scripts on multics for crying out loud!

"I wish developers would stop copying SQL" This really doesn't look much like SQL to me - much more like an interesting variation on XPath... Why do you think it is a copy of SQL?

Sorry, my comment really should have been a reply to the SQL-Like post.

Re: SpahQL - A query language for Javascript objects

#23

Earlier quoted context omitted.

Can you unpack that question a little for me? As in, could you use a spahql selection as the path component of some request? I don't see why not, but the escaping will probably look a little ugly.

Given a url that returns JSON: www.example.com/data.json, one could append SparQL to select a subset www.example.com/data.json/user www.example.com/data.json/categories/* www.example.com/data.json/categories/0/products www.example.com/data.json//avatar

The only small issue I can see with that is identifying where the path to the resource ends and where the query to applied to the JSON representation of the resource starts.

Perhaps something like:

    www.example.com/data.json?query=/user

Re: SpahQL - A query language for Javascript objects

#24
post #16

I wish developers would stop copying SQL. It's like making fancy new languages, and then adding libraries that help you emulate COBOL. SQL is not the first, the last, or the best query language ever created, it's just the best marketed. It's not even properly relational, it's based on a series of shell scripts on multics for crying out loud!

Please provide some substance to your post. What other options exist? What are some references you've used to work with those options?

Well back when SQL was first created, there was a superior alternative named QUEL. Fast forward to today, and with the proliferation of programming languages that easily support high level concepts, it doesn't take that much imagination to think of better ways of dealing with large relation-values. linq for example. Going along a different direction, the language Prolog, and its much improved derivative Mercury take the concept of query languages to really amazingly awesome places. The quite well done software package PrinceXML was written in Mercury.

Edit: I also want to add Datalog http://en.wikipedia.org/wiki/Datalog

and list comprehensions http://en.wikipedia.org/wiki/List_comprehensions

Re: SpahQL - A query language for Javascript objects

#25

Earlier quoted context omitted.

Given a url that returns JSON: www.example.com/data.json, one could append SparQL to select a subset www.example.com/data.json/user www.example.com/data.json/categories/* www.example.com/data.json/categories/0/products www.example.com/data.json//avatar

The only small issue I can see with that is identifying where the path to the resource ends and where the query to applied to the JSON representation of the resource starts. Perhaps something like: www.example.com/data.json?query=/user

A webserver could easily figure that out, as long as it is configured correctly and with knowledge of the domain. I don't like using query strings like this, as it makes the URL point to multiple objects.

Re: SpahQL - A query language for Javascript objects

#26

Earlier quoted context omitted.

The only small issue I can see with that is identifying where the path to the resource ends and where the query to applied to the JSON representation of the resource starts. Perhaps something like: www.example.com/data.json?query=/user

A webserver could easily figure that out, as long as it is configured correctly and with knowledge of the domain. I don't like using query strings like this, as it makes the URL point to multiple objects.

I'm not sure it could, if I have a resource with a URL:

    www.example.com/foo
and it can arbitary sub-resources e.g.

    www.example.com/foo/bar/raz
then how do I know whether bar is a different resource or part of the JSON returned describing www.example.com/foo

This would mean you'd have to restrict your resource names to ensure they don't clash with JSON names - which seems a pain (e.g. say the resource names are uploaded files and directories, so you won't have much control over what they are called)

Re: SpahQL - A query language for Javascript objects

#27

Earlier quoted context omitted.

The only small issue I can see with that is identifying where the path to the resource ends and where the query to applied to the JSON representation of the resource starts. Perhaps something like: www.example.com/data.json?query=/user

A webserver could easily figure that out, as long as it is configured correctly and with knowledge of the domain. I don't like using query strings like this, as it makes the URL point to multiple objects.

Replying to the reply to this- I am pretty sure the webserver can easily find out that foo is a JSON file when resolving the path. Most operating systems don't let you name a file and a directory the same thing, so the file system API knows straight away there is no such directory named "foo", and can have special handling for whatever kind of file "foo" happens to be. (in this case, JSON)

Re: SpahQL - A query language for Javascript objects

#28
linq.js has been doing this for years now. Its a mature library, flexible and light. I use it for every web project, wouldn't know what to do with out it. http://linqjs.codeplex.com/ Examples: http://neue.cc/reference.htm

  Features
  --------------------------------------  
  implement all .NET 4.0 methods and many extra methods
  (inspiration from Rx, Achiral, Haskell, Ruby, etc...)
  complete lazy evaluation
  full IntelliSense support for VisualStudio
  two versions - linq.js and jquery.linq.js (jQuery plugin)
  support Windows Script Host
  binding for Reactive Extensions for JavaScript(RxJS) and   
  IntelliSense Generator -> see documentation
  NuGet install support(linq.js, linq.js-jQuery, linq.js-Bindings)

  90 Methods
  ----------------------------------------
  Aggregate, All, Alternate, Any, Average, BufferWithCount,   
  CascadeBreadthFirst, CascadeDepthFirst, Catch, Choice,  
  Concat,Contains, Count, Cycle, DefaultIfEmpty, Distinct, Do,   
  ElementAt, ElementAtOrDefault, Empty, Except, Finally, First,  
  FirstOrDefault, Flatten, ForEach, Force, From, Generate,  
  GetEnumerator, GroupBy, GroupJoin, IndexOf, Insert, Intersect, 
  Join, Last, LastIndexOf,
  LastOrDefault, Let, Matches, Max, MaxBy, MemoizeAll, Min,  
  MinBy, OfType, OrderBy, OrderByDescending, Pairwise,  
  PartitionBy, Range, RangeDown, RangeTo, Repeat,  
  RepeatWithFinalize, Return, Reverse, Scan, Select, SelectMany,  
  SequenceEqual, Share, Shuffle,
  Single, SingleOrDefault, Skip, SkipWhile, Sum, Take,  
  TakeExceptLast, TakeFromLast, TakeWhile, ThenBy,  
  ThenByDescending, ToArray,
  ToDictionary, ToInfinity,ToJSON, ToLookup, ToNegativeInfinity,  
  ToObject, ToString, Trace, Unfold, Union, Where, Write,  
  WriteLine, Zip

Re: SpahQL - A query language for Javascript objects

#29
post #28

linq.js has been doing this for years now. Its a mature library, flexible and light. I use it for every web project, wouldn't know what to do with out it. http://linqjs.codeplex.com/ Examples: http://neue.cc/reference.htm Features -------------------------------------- implement all .NET 4.0 methods and many extra methods (inspiration from Rx, Achiral, Haskell, Ruby, etc...) complete lazy evaluation full IntelliSense…

Good utility, but I had a few specific itches to scratch with SpahQL:

* Declarative syntax for selections, such that selection queries may be handed between implementations in other languages

* Imperative syntax for updates, such that updates may be idiomatic to the language in which the spahql library has been ported (linq meets this criteria)

In essence all SpahQL is, is a shorthand syntax for generating traversal and descent functions, which output a proxy object for reading to and writing from the selected nodes.

Post reply on HN