Esiste un isomorfismo tra (sottoinsieme di) teoria delle categorie e algebra relazionale?


12

Viene dalla prospettiva dei big data. Fondamentalmente, molti framework (come Apache Spark) "compensano" la mancanza di operazioni relazionali fornendo interfacce tipo Functor / Monad e c'è un movimento simile verso conversioni da gatti a SQL (Slick in Scala). Ad esempio, abbiamo bisogno di un join naturale (supponendo che non vi siano ripetizioni sugli indici) per la moltiplicazione dei vettori dal punto di vista SQL, che potrebbe essere considerata come zip + map(multiply) (il MLib di Spark, tuttavia, ha già ElementwiseProduct) nelle applicazioni della teoria delle categorie.

Semplicemente dicendo (i seguenti esempi sono in Scala):

  • la sottocassa referenziata di join può essere pensata come funzione applicativa (sopra una raccolta ordinata), che a sua volta ci dà 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). Inoltre, possiamo indurlo ad alcuni altri join, assumendo un po 'di preelaborazione ( groupByoperatore o solo surjection, o in generale - un epimorfismo).

  • altri join e selezioni possono essere considerati monadi. Ad esempio, WHEREè solo: List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)->List(1,2,2,4).filter(_ < 3)

  • i dati in sé sono solo ADT (anche GADT?), che a sua volta sembra una semplice categoria di set (o più in generale - cartesiana-chiusa), quindi dovrebbe (suppongo) coprire operazioni basate su set (a causa di Curry- Howard-Lambek stesso) e anche operazioni simili RENAME(almeno nella pratica).

  • aggregazione corrisponde a fold/reduce(catamorfismo)

Quindi, quello che sto chiedendo è che possiamo costruire un isomorfismo tra (forse sottoinsieme di) teoria delle categorie e (l'intera) algebra relazionale o c'è qualcosa da scoprire? Se funziona, quale "sottoinsieme" esatto di categorie è isomorfo della relalgebra?

Puoi vedere che i miei presupposti sono piuttosto ampi mentre soluzioni formali come la corrispondenza Curry-Howard-Lambek per la logica-gatti-lambda sono più precise - quindi in realtà, sto chiedendo un riferimento a uno studio compiuto (che mostra una relazione diretta ) con altri esempi in Scala / Haskell.

Modifica : la risposta accettata mi ha fatto pensare che sono andato troppo lontano rappresentando join e condizioni come una monade (specialmente usando un valore vuoto che istanzia efficacemente FALSE), penso che i pullback dovrebbero bastare almeno per il sottoinsieme relalgebra di SQL. Le monadi sono migliori per oggetti di ordine superiore (nidificazione) come GROUP BY, che non fa parte della relalgebra.

Risposte:


13

Vorrei articolare la corrispondenza Curry-Howard-Lambek con un po 'di gergo che spiegherò. Lambek mostrò che il calcolo lambda semplicemente tipizzato con i prodotti era la lingua interna di una categoria chiusa cartesiana. Non ho intenzione di precisare cosa sia una categoria chiusa cartesiana, anche se non è difficile, invece quello che dice la frase sopra è che non devi sapere! (O che già sai, se sai qual è il calcolo lambda semplicemente digitato con i prodotti.) Per una teoria / logica di tipo essere il linguaggio / la logica interna di una categoria significa 1) che possiamo interpretare il linguaggio nella struttura su la categoria in modo da preservare la struttura della lingua (in effetti una condizione di solidità), e2) e "essenzialmente" tutta la struttura derivante dalla chiusura cartesiana può essere discussa in termini di questa lingua (una condizione di completezza).

L'algebra relazionale è equivalente alla tupla o al calcolo relazionale del dominio che è essenzialmente la logica del primo ordine. Questa affermazione è approssimativamente il teorema di Codd , sebbene un teorema simile sia stato dimostrato decenni prima da Tarski per FOL e algebre cilindriche . C'è un po 'di sottigliezza però. Vogliamo che le query nel calcolo relazionale siano indipendenti dal dominio, vale a dire che l'espansione del dominio di possibili valori non modifica i risultati di una query. Un esempio di una query di calcolo relazionale che non è indipendente dal dominio è . Ogni espressione di algebra relazionale è logicamente equivalente a un dominio indipendente{xx=x} query nel calcolo relazionale.

A parte questo, le categorie la cui logica interna (che è essenzialmente una forma decategorificata o irrilevante di un linguaggio interno) sono categorie Heyting per FOL intuizionistiche e categorie booleane per FOL classico. (Le versioni pertinenti categorizzate / di prova sono descritte da iperdottrine . Molto rilevanti sono anche le pretoposi di vario tipo.) Si noti che FOL, il calcolo relazionale e l'algebra relazionale non supportano l'aggregazione. (Inoltre non supportano la ricorsione necessaria per rappresentare una query del registro dati.) Un approccio aGROUP BYe l'aggregazione è quella di consentire colonne con valore di relazione che porta alla logica di ordine superiore (HOL) e al calcolo relazionale nidificato (NRC). Una volta che abbiamo colonne con valori di relazione, l'aggregazione può essere formalizzata come un altro operatore "scalare".

I tuoi esempi indicano che una meta-lingua monadica è una lingua decente per le query. Il documento Monad Comprehensions: A Versatile Representation of Queries ( PDF ) lo spiega bene. Un aspetto più completo e moderno è la tesi di dottorato di Ryan Wisnesky, Un linguaggio di query funzionale con tipi categoriali ( PDF ), che è correlato al lavoro di David Spivak che a sua volta sembra piuttosto rilevante per qualsiasi interpretazione della tua domanda. (Se vuoi diventare più storico, c'era il Kleisli, A Functional Query System .) In effetti, il metadingolo monadico è un linguaggio decente per le query nel nidificatocalcolo relazionale. Wisnesky formula NRC in termini di topos elementare il cui linguaggio interno è il linguaggio Mitchell-Bénabou che sostanzialmente assomiglia a una teoria dell'insieme intuitivo con quantificatori limitati. Ai fini di Wisnesky, usa un topos booleano che avrà invece una logica classica. Questo linguaggio è comunque molto più potente di (core) SQL o Datalog. Vale la pena notare che la categoria di insiemi finiti forma un topos (booleano) .


1
Sebbene non sia direttamente correlato, ma dato che hai menzionato topoi e HOL, sarebbe bello vedere anche un groupoid superiore e / o interpretazioni di omotopia.
dk14
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.