  A purely relational account of the true XQuery semantics can turn any
relational database system into an XQuery processor. Compiling nested
expressions of the fully compositional XQuery language, however, yields odd
algebraic plan shapes featuring scattered distributions of join operators that
currently overwhelm commercial SQL query optimizers.
  This work rewrites such plans before submission to the relational database
back-end. Once cast into the shape of join graphs, we have found off-the-shelf
relational query optimizers--the B-tree indexing subsystem and join tree
planner, in particular--to cope and even be autonomously capable of
"reinventing" advanced processing strategies that have originally been devised
specifically for the XQuery domain, e.g., XPath step reordering, axis reversal,
and path stitching. Performance assessments provide evidence that relational
query engines are among the most versatile and efficient XQuery processors
readily available today.
