Figures (14)  Tables (11)
    • Figure 1. 

      An example of the semantic-rich HIN DBpedia.

    • Figure 2. 

      Diverse semantically similar communities.

    • Figure 3. 

      The schema of the HIN illustrated in Fig. 1 with five example meta-paths between nodes with a type $\mathrm{Person}$.

    • Figure 4. 

      Parallel $ {\cal{P}}^* $-neighbor expansion.

    • Figure 5. 

      Efficiency comparison.

    • Figure 6. 

      Effect of $ \hat{l} $ on efficiency.

    • Figure 7. 

      Effect of $ \hat{l} $ on effectiveness metrics (NMP and SC).

    • Figure 8. 

      Effect of $ k $ on efficiency.

    • Figure 9. 

      Effect of $ k $ on effectiveness metrics (NMP and SC).

    • Figure 10. 

      Effect of $ r $ on efficiency.

    • Figure 11. 

      Effect of $ r $ on effectiveness metrics (NMP and SC).

    • Figure 12. 

      Effect of $ b $ on efficiency.

    • Figure 13. 

      Effect of # threads on efficiency.

    • Figure 14. 

      Case studies on DBpedia.

    • Input: HIN $ G $, SMP = $ \langle A_t,A_a,S,\hat{l} \rangle $, $ q $, $ k \geq $ 0, $ r \geq 1 $
      Output: top-$ r $ SICs with highest semantic cohesiveness
      1 $ \mathrm{HSet} \leftarrow \emptyset $; $ \mathrm{SemSet}\leftarrow \emptyset $; $ H^{\prime} \leftarrow \emptyset $;
      2 $ \mathrm{count} \leftarrow $ 0; // $ \mathrm{ number of SICs}$
      3 $ \mathrm{R} \leftarrow \{ S_i \in {\cal{R}} \} $, in descending order of $ W_{S_i\rightarrow S} $;
      4 while: ${\it{\mathrm{count}}} \lt r $ do
      // $\mathrm{Step (1): Semantic expansion} $
      5 if $ |{\it{\mathrm{SemSet}}}| = |{\it{\mathrm{R}}}| $ then
      6 break;
      7 $ \mathrm{SemSet} \leftarrow \mathrm{SemSet}\cup\mathrm{R} $.poll();
      // $\mathrm{Step (2): } G_{\mathrm{SMP}} \mathrm{ construction } $
      8 $ G_{\text{SMP}} \leftarrow \mathrm{getSMPGraph} (G, \text{SMP}, q, \mathrm{SemSet}) $;
      // $\mathrm{Step (3): SIC extraction} $
      9 $ H \leftarrow $ find a connected ($ k $,SMP)-core of $ q $ from $ G_{\text{SMP}} $;
      10 if $ H $ does not exist then
      11 continue;
      // $\mathrm{Step (4): Quality evaluation} $
      12 if $ |V(H)| \gt |V(H^{\prime})| $ then
      13 $ \mathrm{HSet} \leftarrow \mathrm{HSet} \cup H $;
      14 $ H^{\prime} \leftarrow H $;
      15 $ \mathrm{count} \leftarrow \mathrm{count}+1 $;
      16 return ${\it{\mathrm{HSet}}}$;

      Table 1. 

      $\mathrm{Basic}$.

    • Input: HIN $ G $, SMP = $ \langle A_t,A_a,S,\hat{l} \rangle $, $ q $, $\mathrm{SemSet}$
      Output: $ q $-centric SMP-graph $ G_{\text{SMP}} $
      1 $\mathrm{Expand} \leftarrow q $; $ \mathrm{Visited} \leftarrow \emptyset $; $ G_{\text{SMP}} \leftarrow \emptyset $;
      2 while: $ \mathrm{Expand} \neq \emptyset $ do
      // $ \mathrm{Step (1): Neighbor retrieval} $
      3 $ u \leftarrow \mathrm{Expand} $.poll();
      4 $ \langle N^*(u), E^*(u) \rangle \leftarrow \mathrm{FPN}$($ G, u $, SMP, $\mathrm{SemSet}$);
      // $ \mathrm{Step (2): Graph update} $
      5 $ G_{\text{SMP}} \leftarrow G_{\text{SMP}} \cup \langle N^*(u), E^*(u) \rangle $;
      6 $ \mathrm{Visited} \leftarrow \mathrm{Visited} \cup \{u\} $;
      7 $ \mathrm{Expand} \leftarrow \mathrm{Expand} \cup (N^*(u) \setminus \mathrm{Visited}) $;
      8 return $ G_{\text{SMP}} $;

      Table 2. 

      $\mathrm{getSMPGraph}$($ G $, SMP, $ q $, $\mathrm{SemSet}$).

    • Input: HIN $ G $, node $ u $, SMP = $ \langle A_t,A_a,S,\hat{l} \rangle $, $ q $, $\mathrm{SemSet}$
      Output: $ {\cal{P}}^* $-neighbors and edges of node $ u $ $ \langle N^*(u), E^*(u) \rangle $
      1 $ N^*(u) \leftarrow \emptyset $; $ E^*(u) \leftarrow \emptyset $;
      2 $ \mathrm{NbrExpand} \leftarrow u $;
      3 $ \mathrm{Path} \leftarrow p_{uu} $;
      4 while: $ \mathrm{NbrExpand} \neq \emptyset $ do
      // $\mathrm{Step (1): Neighbor exploration} $
      5 $ w \leftarrow \mathrm{NbrExpand} $.poll();
      6 $ p_{uw} \leftarrow \mathrm{Path} $.poll();
      7 $ \mathrm{Neighbor}(w) \leftarrow $ w's neighbors in $ G $;
      8 while: $ \mathrm{Neighbor}(w) \neq \emptyset $ do
      // $\mathrm{Step (2): Path extension} $
      9 $ v \leftarrow \mathrm{Neighbor}(w) $.poll();
      10 if $ \mathrm{SemSet} $.contains($ \psi(e_{wv}) $) then
      11 $ p_{uv} \leftarrow p_{uw} \cup e_{wv} $;
      12 if $ u=v $ then
      13 continue;
      // Step (3): Neighbor update
      14 if $ p_{uv} $.length() $ \leq \hat{l} $ and $ \phi(v) = A_t $ and $ \phi(x) = A_a $ ($ x $ is a node in $ p_{uv} $) then
      15 $ N^*(u) \leftarrow N^*(u) \cup v $;
      16 $ E^*(u) \leftarrow E^*(u) \cup p_{uv} $;
      17 else if $ p_{uv} $.length() $ \lt \hat{l} $ then
      18 $ \mathrm{NbrExpand} \leftarrow \mathrm{NbrExpand} \cup v $;
      19 $ \mathrm{Path} \leftarrow \mathrm{Path} \cup p_{uv} $;
      20 return $ \langle N^*(u), E^*(u) \rangle $;

      Table 3. 

      $\mathrm{FPN}$($ G, u $, SMP, $\mathrm{SemSet}$).

    • Input: HIN $ G $, SMP = $ \langle A_t,A_a,S,\hat{l} \rangle $, $ q $, $ k \geq $ 0, $ r\geq 1 $, $ b \gt 1 $
      Output: top-$ r $ SICs with highest semantic cohesiveness
      1 $ \mathrm{HSet} \leftarrow \emptyset $; $ \mathrm{SemSet} \leftarrow \emptyset $; $ H^{\prime} \leftarrow \emptyset $;
      2 $ \mathrm{R} \leftarrow \{ S_i| S_i \in {\cal{R}} \} $, sorted in descending order;
      3 $ U \leftarrow $ 1;
      4 while: $ U \lt |\mathrm{R}| $ do
      // $ \mathrm{Step (1): Batch semantic expansion} $
      5 if $ U+b \lt |\mathrm{R}| $ then
      6 $ D = U+b $;
      7 else
      8 $ D = |\mathrm{R}| $;
      9 for $ i\leftarrow U $ to $ D $ do
      10 $ \mathrm{SemSet} \leftarrow \mathrm{SemSet} \cup \mathrm{R} $.get($ i $);
      // $ \mathrm{Step (2): Construct } G_\mathrm{SMP}$
      11 $ G_{\text{SMP}} \leftarrow \mathrm{getSMPGraph}(G, \text{SMP}, q, \mathrm{SemSet}) $;
      // $ \mathrm{Step (3): SIC extraction} $
      12 $ H \leftarrow $ find a connected ($ k $,SMP)-core of $ q $ from $ G_{\text{SMP}} $;
      // $ \mathrm{Step (4): Binary semantic search} $
      13 if $ H $ does not exist then
      14 $ U\leftarrow D+1 $;
      15 continue;
      16 else
      17 if $ |V(H)| \gt |V(H^{\prime})| $ then
      18 $ \mathrm{HSet} \leftarrow \mathrm{HSet} \cup \mathrm{BSS} $($ H' $, $ G_{\text{SMP}} $, $ U $, $ D $, $\mathrm{R}$, $ r $, $ |\mathrm{HSet}| $, $ q $);
      19 if $ |\mathrm{HSet}| $ = $ r $ then
      20 break;
      21 $ H^{\prime} \leftarrow H $;
      22 $ U\leftarrow D+1 $;
      23 else
      24 $ U\leftarrow D+1 $;
      25 continue;
      26 return ${\it{\mathrm{HSet}}}$;

      Table 4. 

      $\mathrm{Opt-BSS}$.

    • Input: $ H' $, $ G_{\text{SMP}} $, $ U \gt 0 $, $ D \gt 0 $, $\mathrm{R}$, $ r \geq 1 $, $ \mathrm{count} \geq $ 0, $ q $
      Output: top-$ r $ SICs with highest semantic cohesiveness
      1 $\mathrm{left} \leftarrow U $; $ \mathrm{right} \leftarrow D $;
      2 $\mathrm{HSet} \leftarrow \emptyset $; $ \mathrm{SemSet}\leftarrow \emptyset $;
      3 while $ \mathrm{left} \leq \mathrm{right} $ do
      // $\mathrm{Termination check}$
      4 if $\mathrm{count}$ = $ r $ then
      5 break;
      6 if $\mathrm{count}$ = 0 then
      7 $ H^{\prime} \leftarrow \emptyset $;
      // $\mathrm{Step (1): Midpoint selection}$
      8 $\mathrm{mid}$ = $\mathrm{left}$ + $ \lfloor (\mathrm{right} - \mathrm{left}) / 2 \rfloor $;
      9 $\mathrm{SemSet}\_\mathrm{BSS} \leftarrow \emptyset $;
      10 for $ i \leftarrow 1 $ to $\mathrm{mid}$ do
      11 $ \mathrm{SemSet}\_\mathrm{BSS} \leftarrow \mathrm{SemSet}\_\mathrm{BSS} \cup \mathrm{R} $.get($ i $);
      // $\mathrm{Step (2) and (3)}$
      12 $ G'_{\text{SMP}} \leftarrow $ find a smaller $ G'_{\text{SMP}} $ using $\mathrm{SemSet}\_\mathrm{BSS}$;
      13 $ H \leftarrow $ find a connected ($ k $,SMP)-core of $ q $ from $ G'_{\text{SMP}} $;
      // $\mathrm{Step (4): SIC refinement}$
      14 if $ H $ exists and $ |V(H)| \gt |V(H^{\prime})| $ then
      15 if $\mathrm{mid}$ = $\mathrm{left}$ then
      16 $ H' \leftarrow H $;
      17 $\mathrm{count}$ = $\mathrm{count}$ + 1;
      18 $\mathrm{HSet} \leftarrow \mathrm{HSet} \cup H $;
      19 $\mathrm{left} \leftarrow \mathrm{mid} +1 $;
      20 $\mathrm{right} \leftarrow D $;
      21 continue;
      22 else
      23 $\mathrm{right}$ = $\mathrm{mid}-1 $;
      24 else
      25 $\mathrm{left}$ = $\mathrm{mid}+1 $;
      26 if $\mathrm{left} \gt \mathrm{right}$ then
      27 $\mathrm{SemSet}\_\mathrm{BSS} \leftarrow \mathrm{SemSet}\_\mathrm{BSS} \cup \mathrm{R} $.get($ \mathrm{left}$);
      28 repeat lines 12-13;
      29 if $ H $ exists then
      30 repeat lines 16−21;
      31 return ${\it{\mathrm{HSet}}}$;

      Table 5. 

      $\mathrm{BSS}$($ H' $, $ G_{\text{SMP}} $, $ U $, $ D $, $\mathrm{R}$, $ r $, $ \mathrm{count}$, $ q $).

    • Input: HIN $ G $, SMP = $ \langle A_t,A_a,S,\hat{l} \rangle $, query node $ q $, integer $ k \geq $ 0, integer $ r \gt 0 $, integer $ b \gt 1 $
      Output: SICs with top-$ r $ semantic cohesiveness
      1 $\mathrm{HSet} \leftarrow \emptyset $; $ \mathrm{SemSet} \leftarrow \emptyset $; $ H^{\prime} \leftarrow \emptyset $;
      2 $\mathrm{R} \leftarrow \{ S_i| S_i \in {\cal{R}} \} $, sorted in descending order;
      3 $ U \leftarrow $ 1; $\mathrm{count} \leftarrow $ 0; //
      4 while: $ U \lt |\mathrm{R}| $ do
      // $\mathrm{Step (1)-(3)}$
      5 lines 5-12 in $\mathrm{Opt-BSS}$ (Algorithm 4)
      // $\mathrm{Step (4): Binary semantic search with recording}$
      6 if $ H $ does not exist then
      7 lines 14-15 in $\mathrm{Opt-BSS}$ (Algorithm 4)
      8 else
      9 if $ |V(H)| \gt |V(H^{\prime})| $ then
      10 $\mathrm{findedH} $.put($\mathrm{mid} $, $ H $);
      11 $ \mathrm{HSet} \leftarrow \mathrm{HSet} \cup \mathrm{RecordBSS} $($ H' $, $ U $, $ D $, $\mathrm{R}$, $ r $, $ \mathrm{count}$, $ q $, $ \mathrm{findedH}$);
      12 lines 19-22 in $\mathrm{Opt-BSS}$ (Algorithm 4)
      13 else
      14 lines 24-25 in $\mathrm{Opt-BSS}$ (Algorithm 4)
      15 return $\mathrm{HSet}$;

      Table 6. 

      $\mathrm{Opt-Record}$.

    • Input: previously discovered community $ H' $, integer $ U \gt 0 $, integer $ D \gt 0 $, ordered list of edge types $\mathrm{R}$, integer $ r \gt 0 $, integer $ \mathrm{count} \geq $ 0, query node $ q $
      Output: SICs with top-$ r $ semantic cohesiveness
      1 $ \mathrm{left} \leftarrow U $; $ \mathrm{right} \leftarrow D $;
      2 $ \mathrm{HSet} \leftarrow \emptyset $; $ \mathrm{SemSet}\_\mathrm{BSS} \leftarrow \emptyset $;
      3 $ \mathrm{lastRight} \leftarrow \emptyset $; $ \mathrm{SemSizeSet} \leftarrow \emptyset $;
      4 while: $ \mathrm{left} \leq \mathrm{right}$ do
      // $ \mathrm{Step (1): Midpoint selection}$
      5 lines 4–11 in $\mathrm{BSS}$ (Algorithm 5)
      // $ \mathrm{Step (2): SIC extraction}$
      6 if $\mathrm{right = D}$ then
      7 $\mathrm{lastH}$ = $\mathrm{findedH}$.get($\mathrm{right}$)
      8 else
      9 $\mathrm{lastH}$ = $\mathrm{findedH}$.get($\mathrm{right + 1}$)
      10 $ H \leftarrow $ find a connected ($ k $,SMP)-core that satisfies $\mathrm{SemSet}\_\mathrm{BSS}$ in $\mathrm{lastH}$ containing $ q $;
      // $ \mathrm{Step (3): SIC refinement}$
      11 if $ H $ exists and $ |V(H)| \gt |V(H^{\prime})| $ then
      12 if $\mathrm{mid}$ = $\mathrm{left}$ then
      13 $\mathrm{count}$ = $\mathrm{count}$ + 1;
      14 lines 16–20 in $\mathrm{BSS}$ (Algorithm 5)
      15 if $\mathrm{left} \gt \mathrm{right}$ then
      16 if $\mathrm{lastRight}$.isEmpty() then
      17 break;
      18 $\mathrm{right} \leftarrow \mathrm{lastRight} $.pop();
      19 else
      20 $ \mathrm{findedH}$.put($\mathrm{mid}$, $ H $);
      21 $\mathrm{lastRight}$.push($\mathrm{right}$);
      22 $\mathrm{right}$ = $\mathrm{mid}-1 $;
      23 $\mathrm{SemSizeSet} \leftarrow \mathrm{SemSizeSet} \cup \mathrm{mid}$
      24 else
      25 $ \mathrm{left}$ = $\mathrm{mid}+1 $;
      26 if $\mathrm{SemSizeSet}$.contains($ \mathrm{mid}+1 $) then
      27 lines 16–18 in $\mathrm{BSS}$ (Algorithm 5)
      28 repeat lines 15–18
      29 return $\mathrm{HSet}$;

      Table 7. 

      $\mathrm{BSS-Record}$($ H' $, $ U $, $ D $, $\mathrm{R}$,$ r $, $\mathrm{count} $,$ q $, $\mathrm{findedH}$).

    • Datasets Nodes Edges Node types Edge types
      Wikidata[41] 3,335,203 10,678,827 12,742 818
      Freebase[42] 3,733,753 10,998,482 3,227 3,897
      YAGO[43] 4,295,825 11,413,472 222,887 149
      DBpedia[10] 7,374,882 22,113,471 432 627

      Table 1. 

      Statistics of datasets.

    • Method Wikidata Freebase
      NMP ALSD SC AAS NMP ALSD SC AAS
      Ours (1)–(6) 34 20.6% 0.844 0.291 34.5 21.5% 0.802 0.186
      $ r $KAC 12.25 55.6% 0.576 0.181 15.5 50.6% 0.649 0.209
      KC 15.7 0.413 0.101 21 0.294 0.082
      VAC 3.2 0.558 0.081 4.5 0.504 0.105
      FastOnline 5.3 0.124 13.7 0.163
      Boldface indicates the best result, and underlining indicates the second-best result.

      Table 2. 

      Effectiveness evaluation on Wikidata and Freebase.

    • Method YAGO DBpedia
      NMP ALSD SC AAS NMP ALSD SC AAS
      Ours (1)–(6) 26 16.3% 0.898 0.226 77.75 26.1% 0.877 0.149
      $ r $KAC 11.3 46.6% 0.543 0.128 13.17 73.9% 0.578 0.118
      KC 7 0.503 0.115 22.8 0.639 0.131
      VAC 2 0.524 0.111 2.75 0.571 0.116
      FastOnline 8.2 0.142 18.3 0.105
      Red values indicate the best results, while blue underlined values indicate the second-best results.

      Table 3. 

      Effectiveness evaluation for YAGO and DBpedia.

    • Methods Wiki Freebase YAGO DBpedia
      $ G_{\rm{SMP}} $ Other $ G_{\rm{SMP}} $ Other $ G_{\rm{SMP}} $ Other $ G_{\rm{SMP}} $ Other
      Basic 22.38 7.462 21.37 6.028 13.88 3.916 28.86 8.162
      Opt-BSS 15.05 6.665 9.660 4.278 7.770 3.330 19.60 8.460
      Opt-Record 10.44 6.456 4.017 2.483 4.202 2.598 12.36 7.716
      Basic+P 4.940 2.210 16.64 5.256 2.964 0.936 4.560 1.708
      Opt-BSS+P 3.876 1.824 4.148 1.952 1.904 0.896 3.944 1.856
      Opt-Record+P 2.460 1.640 2.880 1.920 0.840 0.560 2.460 1.640

      Table 4. 

      The runtime (sec) of each step.