Gibt es einen Isomorphismus zwischen (Teil-) Kategorietheorie und relationaler Algebra?

12

Es kommt aus der Big-Data-Perspektive. Grundsätzlich "kompensieren" viele Frameworks (wie Apache Spark) den Mangel an relationalen Operationen, indem sie Functor / Monad-ähnliche Schnittstellen bereitstellen, und es gibt eine ähnliche Tendenz zu Cat-to-SQL-Konvertierungen (Slick in Scala). Zum Beispiel benötigen wir für die elementweise Multiplikation von Vektoren aus der SQL-Perspektive eine natürliche Verknüpfung (vorausgesetzt, es werden keine Wiederholungen für Indizes angenommen), die in den Anwendungen der Kategorietheorie als zip + map(multiply) (in der MLib von Spark jedoch bereits ElementwiseProduct) betrachtet werden kann .

Einfach gesagt (folgende Beispiele sind in Scala):

  • Der referenzierte Unterfall von join kann als anwendungsbezogener Funktor (über sortierte Sammlung) betrachtet werden, der wiederum Folgendes ergibt zip: List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b))-> (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2). Darüber hinaus können wir es zu einigen anderen Verknüpfungen veranlassen, wobei eine gewisse Vorverarbeitung vorausgesetzt wird ( groupByOperator oder nur Surjektion oder allgemein - ein Epimorphismus).

  • Andere Verknüpfungen und Auswahlen können als Monade betrachtet werden. Zum Beispiel WHEREist nur: List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)->List(1,2,2,4).filter(_ < 3)

  • Daten selbst sind nur ADT (GADT auch?), was wiederum wie eine einfache Set-Kategorie (oder allgemeiner gesagt - kartesisch geschlossen) aussieht, also sollte es (ich nehme an) set-basierte Operationen abdecken (aufgrund von Curry- Howard-Lambek selbst) und auch Operationen wie RENAME(zumindest in der Praxis).

  • Aggregation entspricht fold/reduce(Katamorphismus)

Also, was ich frage ist, können wir einen Isomorphismus zwischen (vielleicht einer Teilmenge von) Kategorietheorie und (der ganzen) relationalen Algebra aufbauen oder gibt es etwas, das aufgedeckt ist? Wenn es funktioniert, welche exakte "Teilmenge" von Kategorien ist isomorph zur Relalgebra?

Sie können sehen, dass meine eigenen Annahmen ziemlich weit gefasst sind, während formale Lösungen wie die Curry-Howard-Lambek-Korrespondenz für Logik-Katzen-Lambda präziser sind - also bitte ich tatsächlich um einen Verweis auf eine durchgeführte Studie (die einen direkten Zusammenhang zeigt) ) mit weiteren Beispielen in Scala / Haskell.

Bearbeiten : Die akzeptierte Antwort ließ mich denken, dass ich zu weit gegangen bin, um Verknüpfungen und Bedingungen als Monade darzustellen (insbesondere unter Verwendung eines leeren Werts, der effektiv FALSE instanziiert). Ich denke, Pullbacks sollten zumindest für die relalgebra-Teilmenge von SQL ausreichen. Monaden sind besser für höherwertige (verschachtelte) Dinge wie GROUP BY, die nicht Teil der Relalgebra sind.

dk14
quelle

Antworten:

13

Lassen Sie mich die Curry-Howard-Lambek-Korrespondenz mit ein wenig Jargon artikulieren, den ich erklären werde. Lambek zeigte, dass die einfach getippte Lambda-Rechnung mit Produkten die innere Sprache einer kartesischen geschlossenen Kategorie war. Ich werde nicht darlegen, was eine kartesische geschlossene Kategorie ist, auch wenn es nicht schwierig ist. Stattdessen besagt die obige Aussage, dass Sie es nicht wissen müssen! (Oder das wissen Sie schon, wenn Sie wissen, was der einfach typisierte Lambda-Kalkül mit Produkten ist.) Für eine Typentheorie / -logik bedeutet die interne Sprache / Logik einer Kategorie 1), dass wir die Sprache in die Struktur interpretieren können die Kategorie so, dass die Struktur der Sprache erhalten bleibt (quasi ein Zustand der Solidität), und 2) und "im Wesentlichen" die gesamte Struktur, die sich aus der kartesischen Schließung ergibt, kann in Bezug auf diese Sprache besprochen werden (eine Vollständigkeitsbedingung).

Die relationale Algebra ist äquivalent zu dem Tupel- oder Domänen-Relationskalkül, der im Wesentlichen eine Logik erster Ordnung ist. Diese Aussage ist ungefähr Codds Theorem , obwohl ein ähnliches Theorem Jahrzehnte zuvor von Tarski für FOL und zylindrische Algebren bewiesen wurde . Es ist allerdings ein bisschen subtil. Wir möchten, dass die Abfragen im relationalen Kalkül domänenunabhängig sind, dh, dass das Erweitern der Domäne möglicher Werte die Ergebnisse einer Abfrage nicht verändert. Ein Beispiel für eine relationale Kalkülabfrage, die nicht domänenunabhängig ist, ist{xx=x}. Jeder Ausdruck der relationalen Algebra entspricht logisch einer domänenunabhängigen Abfrage im relationalen Kalkül.

Abgesehen davon sind die Kategorien, deren interne Logik (die im Wesentlichen eine dekategorisierte oder beweisunabhängige Form einer internen Sprache ist) Heyting-Kategorien für intuitionistische FOL und Boolesche Kategorien für klassische FOL. (Die categorified / Nachweis relevanten Versionen sind beschrieben hyperdoctrines . Ebenfalls sehr relevant sind pretoposes verschiedene Art.) Beachten Sie , dass FOL, das relationale Kalkül und die relationale Algebra keine nicht - Aggregation unterstützen. (Sie unterstützen auch nicht die Rekursion, die zum Darstellen einer Datalog- Abfrage erforderlich ist .)GROUP BYDie Aggregation soll Spalten mit relativen Werten ermöglichen, die zu einer Logik höherer Ordnung (HOL) und dem verschachtelten relationalen Kalkül (NRC) führen. Sobald wir Spalten mit relativen Werten haben, kann die Aggregation als ein weiterer "Skalar" -Operator formalisiert werden.

Ihre Beispiele weisen darauf hin, dass eine monadische Metasprache eine anständige Sprache für Abfragen ist. Die Arbeit Monad Comprehensions: A Versatile Representation of Queries ( PDF ) macht dies deutlich. Ein umfassenderes und moderneres Erscheinungsbild bietet Ryan Wisneskys Doktorarbeit, Eine funktionale Abfragesprache mit kategorialen Typen ( PDF ), die sich auf die Arbeit von David Spivak bezieht, die selbst für jede Interpretation Ihrer Frage relevant zu sein scheint. (Wenn Sie historischer vorgehen möchten, gab es das Kleisli, ein funktionales Abfragesystem .) Tatsächlich ist die monadische Metasprache eine anständige Sprache für Abfragen im verschachtelten FormatBeziehungsrechnung. Wisnesky formuliert NRC als Elementartopos, dessen innere Sprache die Mitchell-Bénabou-Sprache ist, die im Grunde genommen wie eine intuitionistische Mengenlehre mit begrenzten Quantifizierern aussieht. Für Wisneskys Zwecke verwendet er einen Booleschen Topos, der stattdessen eine klassische Logik hat. Diese Sprache ist jedoch um einiges mächtiger als (Kern-) SQL oder Datalog. Es ist anzumerken, dass die Kategorie der endlichen Mengen einen (Booleschen) Topos bildet .

Derek Elkins verließ SE
quelle
1
Es ist zwar nicht direkt verwandt, aber angesichts der Tatsache, dass Sie Topoi und HOL erwähnt haben, wäre es schön, auch Interpretationen von höheren Groupoiden und / oder Homotopien zu sehen.
dk14