Edge types (stored in corpus.edges.kind) form an open vocabulary — new types are added when data sources provide them. This document lists all known types organized by category.
The properties JSONB column on edges carries type-specific metadata (grounds for partial cassation, commencement date, reservation text, confidence, etc.).
Edge kinds have varying degrees of cross-jurisdiction applicability. Universal kinds (amends, repeals, cites, interprets...) appear in 3+ legal traditions and are documented here. Multi-jurisdiction kinds (cassation_of, preliminary_reference_to...) appear in 2+ jurisdictions. Local kinds (establishes_jurisprudencia, violates...) are specific to one legal system and documented in the emitting plugin. This is a documentation convention, not a runtime constraint — the kind column has no enum. See ADR: edge pipeline architecture (design-decisions/2026-04-22-edge-pipeline-architecture.md).
Category 1: Textual modification (legislation <-> legislation)
[edit | edit source]
| Edge kind |
Direction |
Description |
Open data
|
| amends |
A->B |
A amends B (umbrella term). Alias: modifies (FR LEGI: MODIFIE/MODIFICATION) |
FR LEGI, UK legislation.gov.uk, IT normattiva
|
| inserts |
A->B |
A inserts text into B |
UK legislation.gov.uk
|
| substitutes |
A->B |
A substitutes text in B |
UK legislation.gov.uk
|
| omits |
A->B |
A removes text from B |
UK legislation.gov.uk
|
| rectifies |
A->B |
A corrects an error in B (no policy change). FR LEGI: RECTIFICATION/RECTIFIE |
FR LEGI, EU corrigenda, EU CELLAR resource_legal_corrects_resource_legal
|
| renumbers |
A->B |
A renumbers provisions in B. Alias: moves (FR LEGI: DEPLACE/DEPLACEMENT) |
FR LEGI
|
| Edge kind |
Direction |
Description |
Open data
|
| repeals |
A->B |
A repeals B entirely |
FR LEGI, UK, all
|
| repeals_in_part |
A->B |
A repeals specific provisions of B |
UK legislation.gov.uk
|
| creates |
A->B |
A creates/establishes B |
FR LEGI
|
| expires |
A->B |
B expires by operation of A (or by its own sunset clause). FR LEGI: PERIME/PEREMPTION, PERIME_NVCC_IDCC/PEREMPTION_NVCC_IDCC |
FR LEGI
|
| suspends |
A->B |
A temporarily suspends B |
Rare in open data
|
| revives |
A->B |
A revives previously suspended/repealed B |
UK
|
| saves |
A->B |
A carves B out from a wider repeal |
UK legislation.gov.uk
|
| extends |
A->B |
A extends the application of B (territorial, temporal, or personal scope). FR LEGI: EXTENSION/ETEND, ADHESION/ADHERE, ELARGISSEMENT/ELARGIT |
FR labor (extension), UK
|
| restricts |
A->B |
A restricts the scope of B |
UK legislation.gov.uk
|
| annuls |
A->B |
A annuls B (judicial or legislative) |
FR LEGI
|
| denounces |
A->B |
A terminates convention/treaty B |
FR labor conventions
|
| disjoins |
A->B |
A splits a relationship between two texts |
FR LEGI
|
| converts |
A->B |
Parliament converts emergency decree A into law B |
IT, FR (ordonnance), ES, BR (medida provisoria)
|
| Edge kind |
Direction |
Description |
Open data
|
| implements |
A->B |
A implements/applies B (implementing regulation -> framework law). FR LEGI: APPLICATION/APPLIQUE, SPEC_APPLI |
FR LEGI, EU
|
| transposes |
A->B |
A transposes EU directive B into national law. FR LEGI: TRANSPOSITION, DIRECTIVE_EUROPEENNE |
EU CELLAR NIM, FR LEGI
|
| commences |
A->B |
Commencement order A brings B into force |
UK legislation.gov.uk
|
| enables |
A->B |
A grants power to make B (delegation) |
Extraction
|
| made_under |
A->B |
A is made under authority of B |
UK
|
| ratifies |
A->B |
A ratifies treaty B |
FR LEGI
|
| codifies |
A->B |
A codifies standalone text B into a code |
FR LEGI
|
| based_on |
A->B |
A has B as treaty base (EU) |
EU
|
| requires_implementation |
A->B |
"pending"|"moot", measure_object: "..."} |
FR Baromètre AN
|
| supplements |
A->B |
A adds sectoral provisions to framework B |
EU
|
| complies_with |
A->B |
A ensures compliance with standard/rule B |
EU, compliance
|
| derogates_from |
A->B |
A explicitly derogates from B |
EU, FR
|
| adopts |
A->B |
A adopts the text of B (Council decision adopting a regulation/directive) |
EU CELLAR resource_legal_adopts_resource_legal
|
| Edge kind |
Direction |
Description |
Open data
|
| cites |
A->B |
A cites B (neutral reference). FR LEGI: CITATION, RENVOI/RENVOIT, CITATION_JURI_LEGI |
FR LEGI, EU CELLAR work_cites_work, ECHR HUDOC extractedappno
|
| replaces |
A->B |
A replaces B (renumbering: article 1240 replaces 1382). FR LEGI: TEXTE_SUITE |
FR LEGI
|
| corresponds_to |
A<->B |
A and B are concordant (synchronized texts) |
FR LEGI
|
| transfers |
A->B |
A moved provision from B to another location |
FR LEGI
|
| source_text |
A->B |
B is the source text that A codifies/implements |
FR LEGI
|
| associated_text |
A<->B |
A and B are associated texts. FR LEGI: TXT_ASSOCIE, RATTACHEMENT/RATTACHE |
FR LEGI
|
| pilot_follower |
A<->B |
A and B are synchronized (labor: pilot/follower) |
FR LEGI
|
| historical |
A->B |
Historical link between A and B |
FR LEGI
|
| consolidates |
A->B |
A consolidates multiple texts including B |
All, EU CELLAR act_consolidated_consolidates_resource_legal
|
| language_variant |
A<->B |
A and B are language versions of the same document |
Multilingual jurisdictions
|
| Edge kind |
Direction |
Description
|
| overrules |
A->B |
A overrules B (B's ratio is no longer good law)
|
| partially_overrules |
A->B |
A overrules B on specific grounds. Properties: {grounds: [...]}
|
| reverses |
A->B |
A reverses B in the same case (appellate)
|
| vacates |
A->B |
A vacates B (US)
|
| not_followed |
A->B |
A explicitly declines to follow B
|
| criticizes |
A->B |
A criticizes reasoning in B
|
| doubts |
A->B |
A expresses doubt about B
|
| limits |
A->B |
A narrows the scope of B without overruling
|
| distinguishes |
A->B |
A distinguishes its facts from B (rule in B does not apply)
|
| Edge kind |
Direction |
Description
|
| follows |
A->B |
A follows the reasoning of B
|
| applies_rule_of |
A->B |
A applies the rule established in B
|
| affirms |
A->B |
A affirms B in the same case (appellate)
|
| confirms |
A->B |
A confirms B's position on a legal question
|
| explains |
A->B |
A explains or clarifies B
|
| harmonizes |
A->B |
A reconciles B with another apparently conflicting decision
|
| Edge kind |
Direction |
Description
|
| appeal_of |
A->B |
A is an appeal of B
|
| cassation_of |
A->B |
A is a cassation review of B (civil law)
|
| remanded_from |
A->B |
A results from remand by B
|
| preliminary_reference_to |
A->B |
National court A refers question to CJEU/constitutional court B
|
| answers_preliminary_reference |
A->B |
A answers the preliminary reference from B
|
| constitutional_reference_to |
A->B |
A refers constitutionality question to constitutional court B (FR QPC, IT, DE)
|
| joined_with |
A<->B |
A and B are joined cases
|
| reviews |
A->B |
A reviews B (generic procedural link). FR LEGI: SUITE_PROCEDURALE
|
| opinion_for |
A->B |
"avocat_general"|"amicus_curiae"}
|
| referred_to_grand_chamber |
A->B |
Chamber judgment A was referred to Grand Chamber, resulting in judgment B. ECHR (deferred — requires re-ingest with new fields)
|
| execution_of |
A->B |
Execution supervision document A monitors compliance with judgment B. ECHR HUDOC-EXEC (deferred — requires HUDOC-EXEC ingestion)
|
| case_group_member |
A->B |
Judgment A belongs to the execution group led by judgment B. ECHR HUDOC-EXEC (deferred — requires HUDOC-EXEC ingestion)
|
| Edge kind |
Direction |
Description
|
| interprets |
A->B |
Decision A interprets provision B. FR LEGI: JURISPRUDENTIEL. EU CELLAR case-law_interpretes_resource_legal, FR LEGI
|
| declares_unconstitutional |
A->B |
Decision A declares B unconstitutional
|
| declares_constitutional |
A->B |
Decision A declares B constitutional
|
| declares_constitutional_with_reservation |
A->B |
A declares B constitutional under specific interpretation. Properties: {reservation: "..."}
|
| annuls |
A->B |
Administrative court A annuls administrative act B (same edge kind as Category 2 annuls)
|
| quashes |
A->B |
A quashes B (UK judicial review)
|
| disapplies |
A->B |
A disapplies national law B (EU primacy). Also: plea of illegality (Art. 277 TFEU). EU CELLAR case-law_incidentally_declares_void_resource_legal
|
| states_infringement_of |
A->B |
Infringement judgment A declares member state failure to comply with directive/regulation B (Art. 258 TFEU). EU CELLAR case-law_states_failure_concerning_resource_legal
|
| violates |
A->B |
Judgment A finds a violation of Convention article B. ECHR (deferred — requires Convention text ingestion)
|
| Edge kind |
Direction |
Description |
Country
|
| establishes_jurisprudencia |
A->B |
5th concordant decision A makes tesis B binding |
MX
|
| interrupts_jurisprudencia |
A->B |
Contradictory decision A breaks the reiteracion chain of tesis B |
MX
|
| substitutes_jurisprudencia |
A->B |
New tesis A replaces old tesis B |
MX
|
| establishes_sumula |
A->B |
Decision A contributes to creating sumula B |
BR
|
| cancels_sumula |
A->B |
Decision A cancels sumula B |
BR
|
| guiding_case_reference |
A->B |
Decision A refers to guiding case B |
CN
|
| judicial_interpretation_of |
A->B |
SPC interpretation A interprets statute B |
CN
|
| Edge kind |
Direction |
Description
|
| lex_specialis_to |
A->B |
A prevails over B in their overlap area (lex specialis)
|
| stacks_with |
A<->B |
A and B apply concurrently with no displacement
|
- All types are directional (A->B) unless marked A<->B.
- The UNIQUE constraint
(source_id, target_id, kind) prevents duplicate edges.
- With nullable
target_id and PostgreSQL's NULL-is-distinct-from-NULL behavior, multiple unresolved references from the same source are allowed.
- Edge properties carry type-specific metadata:
partially_overrules: {grounds: ["moyen_2", "moyen_3"], scope: "partial"}
declares_constitutional_with_reservation: {reservation: "conforme sous reserve que..."}
commences: {commencement_date: "2024-06-01", extent: "england_and_wales"}
suspends: {start: "2024-01-01", end: "2024-12-31"}
- The vocabulary is open — new types added when data sources provide them. No enum constraint in the schema.