UltipaDocs
Try Playground
  • Introduction
  • Managing HDC Graphs
  • Managing Distributed Projections
  • Installing Algorithms
  • Running Algorithms
    • Degree Centrality
    • Closeness Centrality
    • Harmonic Centrality
    • Graph Centrality
    • Betweenness Centrality
    • Eigenvector Centrality
    • Katz Centrality
    • CELF
    • PageRank
    • ArticleRank
    • TextRank
    • HITS
    • SybilRank
    • Jaccard Similarity
    • Overlap Similarity
    • Cosine Similarity
    • Pearson Correlation Coefficient
    • Euclidean Distance
    • K-Hop All
    • Bipartite Graph
    • HyperANF
    • Connected Component
    • Triangle Counting
    • Induced Subgraph
    • k-Core
    • k-Truss
    • p-Cohesion
    • k-Edge Connected Components
    • Local Clustering Coefficient
    • Topological Sort
    • Schema Overview
    • Dijkstra's Single-Source Shortest Path
    • Delta-Stepping Single-Source Shortest Path
    • Shortest Path Faster Algorithm (SPFA)
    • Minimum Spanning Tree
    • Breadth-First Search (BFS)
    • Depth-First Search (DFS)
    • Adamic-Adar Index
    • Common Neighbors
    • Preferential Attachment
    • Resource Allocation
    • Total Neighbors
    • Louvain
    • Leiden
    • Label Propagation
    • HANP
    • k-Means
    • kNN (k-Nearest Neighbors)
    • K-1 Coloring
    • Conductance
      • Random Walk
      • Node2Vec Walk
      • Node2Vec
      • Struc2Vec Walk
      • Struc2Vec
      • LINE
      • Fast Random Projection
      • Summary of Graph Embedding
      • Gradient Descent
      • Backpropagation
      • Skip-gram
      • Skip-gram Optimization
  1. Docs
  2. /
  3. Graph Analytics & Algorithms
  4. /
  5. Centrality

ArticleRank

HDC

Overview

ArticleRank has been derived from PageRank to measure the influence of journal articles.

  • J. Li, P. Willett, ArticleRank: a PageRank-based Alternative to Numbers of Citations for Analysing Citation Networks (2009)

Concepts

ArticleRank

Like links between webpages, citations between articles (e.g., books or reports) indicate authority and quality. It is generally assumed that the more citations an article receives, the greater its perceived impact within its research domain.

However, not all articles are equally important. Hence, this approach based on PageRank was proposed to rank articles.

ArticleRank retains the basic PageRank methodology while making some modifications. When an article passes its rank among its forward links, it does not divide the rank equally by the out-degree of that article, but by the sum of the out-degree of that article and the average out-degree of all articles. The rank of article u after one iteration is:

where Bu is the backlink set of u, d is the damping factor. This change in the denominator reduces the bias that makes articles with few out-links seem to contribute more to their forward links.

NOTE

The denominator of Ultipa's ArticleRank is different from the original paper while the core idea is the same.

Considerations

In comparison with WWW, some features have to be considered for citation networks, such as:

  • An article cannot cite itself, i.e., there is no self-loop in the network.
  • Mutual citations are not allowed; an article cannot be both a forward link and a backlink at the same time.
  • Citations in a published article are fixed, meaning its forward links remain static.

Example Graph

Run the following statements on an empty graph to define its structure and insert data:

ALTER GRAPH CURRENT_GRAPH ADD NODE {
  book ()
};
ALTER GRAPH CURRENT_GRAPH ADD EDGE {
  cite ()-[]->()
};
INSERT (book1:book {_id: "book1"}),
       (book2:book {_id: "book2"}),
       (book3:book {_id: "book3"}),
       (book4:book {_id: "book4"}),
       (book5:book {_id: "book5"}),
       (book6:book {_id: "book6"}),
       (book7:book {_id: "book7"}),       
       (book1)-[:cite]->(book4),
       (book1)-[:cite]->(book5),
       (book2)-[:cite]->(book4),
       (book3)-[:cite]->(book4),
       (book4)-[:cite]->(book5),
       (book4)-[:cite]->(book6);

Creating HDC Graph

To load the entire graph to the HDC server hdc-server-1 as my_hdc_graph:

CREATE HDC GRAPH my_hdc_graph ON "hdc-server-1" OPTIONS {
  nodes: {"*": ["*"]},
  edges: {"*": ["*"]},
  direction: "undirected",
  load_id: true,
  update: "static"
}

Parameters

Algorithm name: page_rank

Name
Type
Spec
Default
Optional
Description
init_valueFloat>00.2YesThe initial rank assigned to all nodes.
loop_numInteger≥15YesThe maximum number of iteration rounds. The algorithm terminates after all iterations are completed.
dampingFloat(0,1)0.8YesThe damping factor.
weakenInteger1, 21YesKeeps it as 2 for ArticleRank. Sets to 1 will run PageRank.
return_id_uuidStringuuid, id, bothuuidYesIncludes _uuid, _id, or both values to represent nodes in the results.
limitInteger≥-1-1YesLimits the number of results returned; -1 includes all results.
orderStringasc, desc/YesSorts the results by rank.

File Writeback

algo(page_rank).params({
  projection: "my_hdc_graph",
  return_id_uuid: "id",
  init_value: 1,
  loop_num: 50,
  damping: 0.8,
  weaken: 2,
  order: "desc"
}).write({
  file: {
    filename: "article_rank"
  }
})

Result:

File: article_rank
_id,rank
book4,0.428308
book5,0.375926
book6,0.319926
book2,0.2
book3,0.2
book7,0.2
book1,0.2

DB Writeback

Writes the rank values from the results to the specified node property. The property type is float.

algo(page_rank).params({
  projection: "my_hdc_graph",
  loop_num: 50,
  weaken: 2  
}).write({
  db:{ 
    property: 'rank'
  }
})

Full Return

exec{
  algo(page_rank).params({
    return_id_uuid: "id",
    init_value: 1,
    loop_num: 50,
    damping: 0.8,
    weaken: 2,
    order: "desc",
    limit: 3
  }) as AR
  return AR
} on my_hdc_graph

Result:

_idrank
book40.428308
book50.375926
book60.319926

Stream Return

exec{
  algo(page_rank).params({
    return_id_uuid: "id",
    loop_num: 50,
    damping: 0.8,
    weaken: 2,
    order: "desc",
    limit: 3
  }).stream() as AR
  return AR
} on my_hdc_graph

Result:

_idrank
book40.428308
book50.375926
book60.319926