Skip to main content

Core Number

SQL function: cugraph_core_number

Compute graph core numbers.

Signature

cugraph_core_number(table_name [, src_col, dst_col [, weight_col [, options_json]]])

Allowed argument counts: 1, 3, 4, 5.

Quickstart

SELECT * FROM cugraph_core_number('target_edges')

Positional arguments

ArgumentTypeRequiredDefaultNotes
table_nameUtf8yes
src_colUtf8nosrc
dst_colUtf8nodst
weight_colUtf8|nullnoaccepted as an edge-column binding; native algorithm execution does not consume weights; semantic effect: none for this algorithm
options_jsonUtf8no

JSON options

OptionTypeDefaultConstraintsDescription
degree_typeUtf8"in_out"one of "in", "out", "in_out"

Graph construction options

Shared by all cuGraph functions, shown here with this function's defaults. The construction_policy option controls whether Nexus requests Python cuGraph-compatible edge normalization or bypasses it for raw libcugraph-style construction; see graph construction options for the full policy guide.

OptionTypeDefaultConstraintsDescription
construction_policyUtf8"python_cugraph"one of "python_cugraph", "raw_libcugraph"Edge-list construction semantics used before calling libcugraph.
directedBooleanfalseWhether graph construction treats edges as directed.
renumberBooleantrueWhether graph construction may renumber external vertex identifiers internally.

Output schema

ColumnTypeNullableDescription
vertexInt64noVertex whose core number is reported.
core_numberInt64noLargest k value for which the vertex belongs to the graph k-core.
note

These are the generic registry schemas. Run cugraph_validate_call for the concrete, table-specific output schema of a particular call.

Examples

This example runs on the citation network demo dataset.

How deep does the densest citation core go?

Core number measures how deep a vertex sits in recursively denser subgraphs (with degree_type: "in_out", degree is in + out). Define the result as a workspace view, find the deepest shell, and list who lives there:

CREATE VIEW cores AS
SELECT vertex, core_number FROM cugraph_core_number('citation_edges', 'src', 'dst');

SELECT MAX(core_number) AS deepest,
COUNT(*) FILTER (WHERE core_number = 70) AS members
FROM cores;
deepestmembers
705,913
SELECT p.year, p.title
FROM cores c JOIN papers p ON p.paper_id = c.vertex
WHERE c.core_number = 70
ORDER BY p.n_citation DESC
LIMIT 6;
yeartitle
2004Distinctive Image Features from Scale-Invariant Keypoints
2001Random Forests
2011LIBSVM: A library for support vector machines
1995The Nature of Statistical Learning Theory
1995Support-Vector Networks
1986A Computational Approach to Edge Detection

The 70-core — 5,913 papers where everyone has at least 70 combined in/out edges to everyone else in the shell — is recognizably the machine-learning / computer-vision canon.

Limitations & notes

  • dry-run validates table resolution, column presence, static dtypes, and options only
  • dry-run does not scan edge data, construct a graph, or prove source-vertex existence

Validate before running

Always dry-run a call before executing it. Validation checks the function, table, columns, dtypes, and options without touching the GPU:

SELECT * FROM cugraph_validate_call(
'cugraph_core_number',
'your_edges_table',
'{"src_col":"src","dst_col":"dst"}'
);

See Discovery & validation for the full cugraph_validate_call contract.