http://franz.com/ns/allegrograph/4.11/sna/bidirectionalSearch

Compute Bidirectional Search paths.

This magic property can be used in several ways:

The first is:

?start sna:bidirectionalSearch ( ex:namedGenerator ?end )
?start sna:bidirectionalSearch ( ex:namedGenerator ?end ?depth )

which will succeed when there is a path between ?start and ?end (both of which must be bound) using generator ex:namedGenerator and the optional ?depth to limit the search.

The second is

(?start ?node) sna:bidirectionalSearch ( ex:namedGenerator ?end )
(?start ?node) sna:bidirectionalSearch ( ex:namedGenerator ?end ?depth )

which is like the above but also returns one binding to ?node for each node along the path between ?start and ?end . Note that although they will tend to appear in sequence there is no guaranteed order between the bindings. The third form provides a way to capture the order in the path. It is:

(?start ?node ?nodeId) sna:bidirectionalSearch ( ex:namedGenerator ?end )
(?start ?node ?nodeId) sna:bidirectionalSearch ( ex:namedGenerator ?end ?depth )

which is like the above but also returns one binding to ?node for each node along the path and a sequential numeric binding to ?nodeId that represents the path element.

The final form is:

(?start ?node ?nodeId ?pathId) sna:bidirectionalSearch ( ex:namedGenerator ?end )
(?start ?node ?nodeId ?pathId) sna:bidirectionalSearch ( ex:namedGenerator ?end ?depth )

It is like the above but also binds ?pathId to a sequential count of the number of the path. I.e., the first path will have ?pathId bound to 0; the second to 1 and so on.

Notes

The following namespace abbreviations are used:

The SPARQL magic properties reference has additional information on using AllegroGraph magic properties and functions.