Locator Algebra (3)
Dependent-Join:
- d-join[f]: L ? L, where f: PL ? Ld-join[f](x) = ?u ? x concat(prefix(u),f(tail(u))
- Example: return all titles of books in their book contextselect[“title”](d-join[children(.)] (select[“book”](d-join[return(children(.))](x)) =/book?/title
Kleene Star:
- fixpoint-operator for recursive descent queries
- *[f]: L ? L, where f: L ? L*[f](x) = f(x) ? *[f](f(x))
- Example: select all titles in their original contextselect[“title”](d-join[children(.)] (*[d-join[return(children(.)](.))](x))=//*?/title
- maybe too general for physical algebra