Banach Smoosher Operator

Graphical Diagram of the Smoosher Operator
Graphical Diagram of the Smoosher Operator

Operation

This operator is composed of two parts:

  • the load-time graph rewiring adapts the graph according to the operations described in the diagram on the right. The goal of this stage is to make sure that every identifier is at-most one owl:sameAs away from its equivalent class centroid, thus reducing the number of queries that need to be performed at query-time.
  • the query-time query rewriting uses the equivalent information to transform a query into multiple queries (the above step guarantees that at maximum two queries are needed per equivalent URI).

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

NOTE: only the load-time rewiring part is currently implemented.

Implementation Strategy

The distiller operation is implemented as a hybrid operator: graph rewiring is performed at load time as to make sure that all nodes are at most one equivalence predicate away from the centroid of their equivalence class and then query rewriting is performed at query time to merge the results from the equivalences.

Examples

Entity Equivalence

Given the input graph

:PabloPicasso :painted :Guernica .
:PicassoPablo :painted :Dora .
:PabloPicasso owl:sameAs :PicassoPablo .

asking the query

:PabloPicasso :painted ?x

would results in the graph

:PabloPicasso :painted :Guernica .
:PabloPicasso :painted :Dora .

Predicate Equivalence

:Guernica dc:creator :PabloPicasso .
:Dora vra:creator :PabloPicasso .
dc:creator owl:equivalentProperty vra:creator .

asking the query

?x dc:creator :PabloPicasso 

would return the graph

:Guernica dc:creator :PabloPicasso .
:Dora dc:creator :PabloPicasso .