Research Article

Dominance-Partitioned Subgraph Matching on Large RDF Graph

Algorithm 2

DPPG-construction algorithm.
Input: a pattern graph
Output: a dominance-partitioned pattern hypergraph
(1)i = 0, DFS[ur] = i,  ⟵ ur;
(2)For u ∈ ur.successors do
(3)If u is unvisited then;
(4)  DFS[u] = i++, Continue to ur.successors;
(5)Else if u is visited then
(6)   ⟵ u;
(7)For DFS[u] = I from to 0 do
(8)For u′ ∈ u.precursors do
(9)  If DFS[u] ∈ DFS[u′] then
(10)    ⟵ (u, u′), Continue to u′.precursors;
(11)  Else if sdom[u] > sdom[u′] then
(12)    ⟵ (u, u′), sdom[u] = sdom[u′];
(13) ⟵ |sdom[u], u);
(14)For u ∈  in descending order of DFS do
(15)For u′ ∈  − u do
(16)  If DFS [u] < DFS [u′] < DFS [sdom[u]] then
(17)  Removing u from ;
(18)For u ∈ do
(19) ⟵ (u, u.precursors),  =  ∪ ;
(20)For u ∈  and u′ ∈  − u do
(21)If ∧  ≠ ∅ then
(22)   ⟵ (u, u′);
(23)Return;