class LD::Patch::Algebra::Path

The LD Patch ‘path` operator.

The Path creates a closure over path operands querying ‘queryable` for terms having a relationship with the input `terms` based on each operand. The terms extracted from the first operand are used as inputs for the next operand until a final set of terms is found. These terms are returned as `RDF:Query::Solution` bound the the variable `?path`

@example empty path

  (path)

Returns input terms

@example forward path

  (path :p)

Queries `queryable` for objects where the input terms are subjects and the predicate is `:p`

@example reverse path

  (path (reverse :p))

Queries `queryable` for subjects where input terms are objects and the predicate is `:p`, by executing the `reverse` operand using input terms to get a set of output terms.

@example constraint

  (path (constraint (path) :c, 1))

Returns the input terms satisfying the constrant.

@example chained path elements

  (path :p :q (constraint (path) :c, 1))

Maps terms using `(path :p)`, using them as terms for `(path :q)`, then subsets these based on the constraint.