1. What is the main source of nondeterminism in the transition table?
Since self-loops in the transition table are the main source of nondeterminism, the XSeq’s compile-time optimizer removes such edges from the generated VPA, whenever possible.
read more
2. What is the way to handle the VPAs?
Handling other constructs Union, intersection (equivalently, node tests) and negation can all be implemented with their correspondingoperations on the intermediary VPAs, as VPAs are closed under union, intersection and complementation.
read more
3. What is the way to remove self-loops from the VPA?
For instance, if the authors know that book nodes only contain two subelements, say title followed by year, the optimizer replaces E1 with 3 new states (without any self-loop) to explicitly skip the title’s open, text and closed tags.
read more
4. Why have the authors used the same run-time engine for XSeq queries?
Because of the excellent VPA execution performance achieved by K*SQL [21], the authors have used the same run-time engine for XSeq queries once they are compiled into a VPA (see Section 7).
read more
![Figure 4: VPAs for (a) /son@Bdate, (b) /daughter son, (c) //book[year = 2000], and (d) //book[@title = ‘mytitle′]](/figures/figure-4-vpas-for-a-son-bdate-b-daughter-son-c-book-year-2du2pwfy.png)




