[Categoricaldata_announce] announcing FPQL
Ryan Wisnesky
wisnesky at math.mit.edu
Wed Oct 22 15:29:20 EDT 2014
Hello everyone,
We are pleased to announce a significant extension to the FQL++ IDE: the inclusion of a new language, called FPQL ("Functorial Programming and Query Language"). I would also like to announce that our lab has a new member, Patrick Shultz, who was instrumental in the creation of FPQL.
Since FQL became stable a year or so ago, one of our main areas for research has been on better handling of FQL "attributes". FQL++ was one attempted solution, and FPQL is another. FQL, FQL++, and FPQL are all different points in the design space for a functorial query language, and we plan to continue creating new languages as part of our research effort. FQL++ and FPQL are still experimental, and "real work" is best done on FQL.
Noteworthy facts about FPQL include:
- FPQL is based on a 'type-theoretic' understanding of functorial data migration. Each FPQL program contains a (user-defined) finitely presented category that serves as a global 'typing context' that includes type names (e.g., string, int), constants (e.g., "bill"), functions (e.g., length : string -> int, reverse : string -> string) and assumptions (e.g, length = reverse.length).
- FPQL schemas are similar to FQL schemas, but are more expressive, in part because the aforementioned global typing context can be referred to in a schema declaration. Unlike FQL and FQL++, FPQL *instances* are also 'presentations'. These presentations can denote infinite instances or even inconsistent instances (e.g., in which 1 = 2), although attempting to view such infinite/inconsistent instances as tables will result in an error.
- FPQL has a different semantics for n-ary products than FQL, and FPQL instances on a particular schema no longer form a cartesian closed category (although sub-object classifier instances still exist).
- The algorithms for delta/sigma/pi in FPQL are all brand-new. In many cases, they perform better than either FQL or FPQL.
- The FQL++ IDE now includes a SQL to FPQL translator.
The FQL++ IDE defaults to using FQL++. To create a new FPQL program, select 'New FPQL' in the File Menu. About a dozen FPQL examples are built-in to the FPQL++ IDE, and they are identified in the example menu by being prefixed with a "P" (e.g., "P All Syntax", "P Employees").
As always, the FQL++ IDE can be downloaded from categoricaldata.net/fql_lib.jar . Feedback/bug reports/suggestions are welcome.
Ryan
More information about the Categoricaldata_announce
mailing list