Banach Distiller Operator

Graphical Diagram of the Distiller Operator
Graphical Diagram of the Distiller Operator

Operation

Given 4 URIs 1,2,3,4 and two predicates a,b connecting them in the way described in the top box on the graphical diagram, the distiller operator, called with a predicate c generates a new statement that links the nodes 1 and 4 with the given predicate c.

The operator is also capable of considering a similar topology where the predicate a direction is reversed. The topology described in the diagram represent the "inward" configuration, while the one where a's direction is inverted is called the "outward" configuration.

If the operator is called without a predicate, then it uses the prediate b instead.

For more information, read the comments in the source code.

Implementation Strategy

The distiller operation is implemented as a "load time" operator, meaning that it does not degrade the performance at query time. Also it is implemented so that the resulting graph can be placed into another graph, thus leaving the input graph untouched. This is useful if we want to separate the results.

Examples

Social Network Extraction

Given the input graph

 :Joe :wrote :Email1 .
 :Paul :wrote :Email2 .
 :Email1 :reply-to :Email2 .

applying the distiller with the predicate :replied-to for the "inward" configuration generates the graph

 :Joe :replied-to :Paul .

that can be interpreted as the "distilled" social network out of the email reply topology.

Type Dataguide

Given the input graph

 :Joe :lives-in :Boston .
 :Joe a :Person .
 :Boston a :City .
 :Joe :works-at :MIT .
 :MIT a :University .
 :Joe :married-to :Sue .
 :Sue a :Person .

applying the distiller without a predicate and the "outward" configuration, we obtain the graph

 :Person :lives-in :City .
 :Person :works-at :University .
 :Person :married-to :Person .

that can be interpreted as the "distilled" data guide (a graph that links the various node types with the properties that can exist between them) to the input graph.