UltipaDocs
Products
Solutions
Resources
Company
Start Free Trial
UltipaDocs
Start Free Trial
  • Introduction
  • Running Algorithms
    • Degree Centrality
    • Closeness Centrality
    • Harmonic Centrality
    • Eccentricity Centrality
    • Betweenness Centrality
    • Bridges
    • Articulation Points
    • Eigenvector Centrality
    • Katz Centrality
    • CELF
    • PageRank
    • ArticleRank
    • TextRank
    • HITS
    • SybilRank
    • Jaccard Similarity
    • Overlap Similarity
    • Cosine Similarity
    • Pearson Correlation Coefficient
    • Euclidean Distance
    • KNN
    • Vector Similarity
    • Bipartite Graph
    • HyperANF
    • Weakly Connected Components (WCC)
    • Strongly Connected Components (SCC)
    • k-Edge Connected Components
    • Local Clustering Coefficient
    • Triangle Count
    • Clique Count
    • k-Core
    • k-Truss
    • p-Cohesion
    • Induced Subgraph
    • Topological Sort
    • Breadth-First Search (BFS)
    • Depth-First Search (DFS)
    • Dijkstra's Shortest Path
    • A* Shortest Path
    • Yen's K-Shortest Paths
    • Shortest Path (BFS)
    • Delta-Stepping SSSP
    • Shortest Path Faster Algorithm (SPFA)
    • All-Pairs Shortest Path (APSP)
    • Minimum Spanning Tree (MST)
    • K-Spanning Tree
    • Steiner Tree
    • Prize-Collecting Steiner Tree (PCST)
    • Minimum Cost Flow
    • Maximum Flow
    • K-Hop Fast
    • Longest Path (DAG)
    • Random Walk
    • Adamic-Adar Index
    • Common Neighbors
    • Preferential Attachment
    • Resource Allocation
    • Total Neighbors
    • Same Community
    • Louvain
    • Leiden
    • Modularity Optimization
    • Label Propagation
    • HANP
    • SLPA
    • k-Means
    • HDBSCAN
    • K-1 Coloring
    • Modularity
    • Conductance
    • Max k-Cut
      • Node2Vec
      • Struc2Vec
      • LINE
      • Fast Random Projection
      • Summary of Graph Embedding
      • Gradient Descent
      • Backpropagation
      • Skip-gram
      • Skip-gram Optimization
  1. Docs
  2. /
  3. Graph Algorithms
  4. /
  5. Centrality

ArticleRank

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.

Considerations

The implementation uses a normalized variant where scores sum to 1. The base rank (1 - d) is replaced by (1 - d) / n, where n is the total number of nodes. Additionally, ranks from dangling nodes (nodes with no outgoing edges) are redistributed equally to all nodes.

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

GQL
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)

Parameters

NameTypeDefaultDescription
dampingFLOAT0.85Damping factor (0, 1).
maxIterationsINT20Maximum number of iterations.
toleranceFLOAT0.0001Convergence tolerance. The algorithm terminates when score changes between iterations are less than this value.
limitINT-1Limits the number of results returned (-1 = all).
orderSTRING/Sorts the results by score: asc or desc.

Run Mode

Returns:

ColumnTypeDescription
nodeIdSTRINGNode identifier (_id)
scoreFLOATArticleRank score

ArticleRank for all nodes:

GQL
CALL algo.articlerank({
  damping: 0.8,
  maxIterations: 50,
  order: "desc"
}) YIELD nodeId, score

Result:

nodeIdscore
book40.1180591192912963
book50.10384991583415497
book60.08861301181641573
book10.057111503220339345
book20.057111503220339345
book30.057111503220339345
book70.057111503220339345

Stream Mode

Returns the same columns as run mode, streamed for memory efficiency.

GQL
CALL algo.articlerank.stream({
  order: "desc",
  limit: 3
}) YIELD nodeId, score
RETURN nodeId, score

Result:

nodeIdscore
book40.1007561488726028
book50.08916975310588023
book60.07578394318603501

Stats Mode

Returns:

ColumnTypeDescription
nodeCountINTTotal number of nodes
minScoreFLOATMinimum ArticleRank score
maxScoreFLOATMaximum ArticleRank score
avgScoreFLOATAverage ArticleRank score
GQL
CALL algo.articlerank.stats() YIELD nodeCount, minScore, maxScore, avgScore

Result:

nodeCountminScoremaxScoreavgScore
70.047212909193221980.10075614887260280.06493735456248655

Write Mode

Computes results and writes them back to node properties. The write configuration is passed as a second argument map.

Write parameters:

NameTypeDescription
db.propertySTRING or MAPNode property to write results to. String: writes the score column in results to a property. Map: explicit column-to-property mapping (e.g., {score: 'ar_score'}).

Writable columns:

ColumnTypeDescription
scoreFLOATArticleRank score

Returns:

ColumnTypeDescription
task_idSTRINGTask identifier for tracking via SHOW TASKS
nodesWrittenINTNumber of nodes with properties written
computeTimeMsINTTime spent computing the algorithm (milliseconds)
writeTimeMsINTTime spent writing properties to storage (milliseconds)
GQL
CALL algo.articlerank.write({damping: 0.85}, {
  db: {
    property: "ar_score"
  }
}) YIELD task_id, nodesWritten, computeTimeMs, writeTimeMs