Skip to content
Onto2DCanonical Identity Lab

Identity before interpretation

When is a graph
the same object?

Names and input order are accidental. Direction, declared roles and structural attributes are not. Canonicalization turns that policy into a deterministic content identity.

InvariantG iso P(G)

ID(G) = ID(P(G))

01

Interactive invariant check

Change the input, then read the identity

IDs shown here are frozen outputs of the repository kernel and independently replayed by tests.

Supplied representation

Feed-forward loop

baseline
Input edge sequence

    Kernel result

    Identity stable
    candidateId

    Baseline

    =

    Current

    skeletonId
    unchanged

    The undirected triangle skeleton stays fixed even when direction or edge role changes candidate identity.

    DisclosureThe browser does not reimplement the canonicalizer. It selects frozen kernel fixtures; repository tests recompute every shown ID.

    Inspect canonicalizer
    02

    Identity policy

    What counts as structure?

    Ignored representationLabels & input order

    Node order, edge order and display names do not enter the canonical candidate bytes.

    6 node permutations x 6 edge orders -> one ID
    Structural relationDirection

    Reversing one arrow changes the directed isomorphism class from feed-forward loop to cycle.

    0f578d7e... -> 913c5005...
    Structural vocabularyEdge role

    Roles are declared semantics. Changing one role produces a new candidate even on the same skeleton.

    0f578d7e... -> 2a7015ba...

    Why this matters

    Closure needs stable objects.

    If the same structure acquired a new identity whenever a caller reordered JSON, censuses, cohorts, rankings and later-depth closure would depend on serialization accidents. Canonical identity removes that degree of freedom before scientific interpretation begins.

    Frozen permutation audit

    36 / 36representations reproduce one candidate ID
    Previous study: network motifs