Tree Editing with Zippers

Post on 20-May-2015

2.847 views 1 download

Tags:

description

A quick talk on how to use Clojure zippers over trees made from records and build a tree pattern matching / mutation facility over that.

Transcript of Tree Editing with Zippers

Tree Editing with Zippers

Alex MillerRevelytix

aka @puredangeraka “Dr. Strange Loop”

Zipper node protocol

Some records

Two “child” variants

seq of records

fields holding records

Use the record zipperComparison

:op := :left :right

ScalarFunction

:f :+ :exprs

ScalarFunction

:f :- :exprs

2 3 6 1

“(2 + 3) = (6 - 1)”

Use the record zipperComparison

:op := :left :right

ScalarFunction

:f :+ :exprs

ScalarFunction

:f :- :exprs

2 3 6 1

“(2 + 3) = (6 - 1)”

Use the record zipperComparison

:op := :left :right

ScalarFunction

:f :+ :exprs

ScalarFunction

:f :- :exprs

2 3 6 1

“(2 + 3) = (6 - 1)”

Use the record zipperComparison

:op := :left :right

ScalarFunction

:f :+ :exprs

ScalarFunction

:f :- :exprs

2 3 6 1

“(2 + 3) = (6 - 1)”

Tree pattern mutator

Apply evaluation ruleComparison

:op := :left :right

ScalarFunction

:f :- :exprs

5

6 1

Comparison

:op := :left :right

5 5

Revelytix

• Data integration using semantic web

• SPARQL -> SQL translation

• SPARQL federation

• Business rules engine

• Emergent analytics

SPARQL to SQL Parse, translate to SPARQL algebra

Plan using mappingOptimize plan

Generate SQL

SELECT ?Person ?NameWHERE { ?Person <http://domain/Person/Name> ?name }

SPARQL algebra tree

SQL query plan

SELECT 'http://domain/Person/' || ID, NameFROM People

SQL query plan

tree rules