[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