== Relevant Papers == * [[http://www.ifi.uzh.ch/dbtg/fileadmin/storage/Glavic/publications/09_icde.pdf|Perm: Processing provenance and data on the same data model through query rewriting]] (ICDE 2009) – Boris Glavic, Gustavo Alonso * [[http://portal.acm.org/citation.cfm?id=1516472|Provenance for nested subqueries]] (EDBT 2009) - Boris Glavic, Gustavo Alonso * [[http://portal.acm.org/citation.cfm?id=1559980|The Perm Provenance Management System in Action]] (SIGMOD 2009, Demo) - Boris Glavic, Gustavo Alonso == Data Model == The provenance of query is represented as a single relation that contains the original query results augmented with provenance information. == Query Language == Perm uses an SQL language extension called SQL-PLE to enable a user to issue provenance queries (e.g. SELECT PROVENANCE). == System == Perm rewrites provenance queries to normal SQL queries inside PostgresSQL (between parser and planner). == Example == shop ^name^ numEmpl^ |Merdies| 3| |Joba| 14| sales ^sName^ itemId^ |Merdies | 1| |Merdies | 2| |Merdies | 2| |Joba| 3| |Joba| 3| items ^id^price^ |1|100| |2|10| |3|25| SELECT name, sum(price) FROM shop, sales, items WHERE name=sName AND itemID=id GROUP BY name ^name^sum(price)^ |Merdies|120| |Joba|50| SELECT PROVENANCE name, sum(price) FROM shop, sales, items WHERE name=sName AND itemID=id GROUP BY name ^name ^sum(price) ^pName ^pNumEmpl ^pSName ^pItemId ^pId ^pPrice^ |Merdies |120 |Merdies |3 |Merdies |1 |1 |100| |Merdies |120 |Merdies |3 |Merdies |2 |2 |10| |Merdies |120 |Merdies |3 |Merdies |2 |2 |10| |Joba |50 |Joba |14 |Joba |3 |3 |25| |Joba |50 |Joba |14 |Joba |3 |3 |25|