A library of observed fault forms in knowledge graphs built from documents
Every fault has a form. Every form does one of seven things to the graph.
153 forms observed on real corpora, each with its provenance, the damage it causes, whether code can cancel it, whether a deletion-only repair can restore the truth, and which kind of truth can judge it. A repair that holds on one form of a damage may fail on another form of the same damage: this is the test matrix that says which.
| Form | Damage | Class | Injection | Seen | Deletion repairs it |
|---|---|---|---|---|---|
| Corpus volume Volume du corpus |
Corpus parameter | Code can abstain on it | PARAMETER | 1 | no |
| Distribution of relation types Distribution des types de relation |
Corpus parameter | Irreducible: needs meaning | PARAMETER | 1 | no |
| Entity typing Typage des entités |
Wrong label | Irreducible: needs meaning | DESIGN | 1 | partial |
| Schema constraints Contraintes de schéma |
Wrong label | Irreducible: needs meaning | CONSTRAINT | 0 | partial |
| Fact redundancy across documents Redondance du fait |
Corpus parameter | Code can abstain on it | DUPLICATE | 1 | no |
| Diversity of document templates Diversité des gabarits |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Variable length and chunking Longueur variable et découpe |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Salience and distractors Saillance et distracteurs |
Spurious edge | Irreducible: needs meaning | INSERT | 1 | yes |
| Layout furniture (headers, footers) Mise en forme et habillage |
Spurious edge | Cancelled by code when the source is XML | FORMAT | 1 | yes |
| Multiple spellings of one entity Graphies multiples d'une entité |
Split | Code can abstain on it | RENAME | 2 | no |
| Pronominal references Reprises pronominales |
Merge | Irreducible: needs meaning | RENAME | 1 | no |
| Typos and OCR confusions Bruit de frappe et confusions d'OCR |
Split | Silent false: code cannot see it from inside | NOISE | 1 | no |
| Acronyms and abbreviations Sigles et abréviations |
Merge | Silent false: code cannot see it from inside | RENAME | 1 | no |
| Registry identifiers Identifiants de registre |
Merge | Cancelled by code | ALTER | 1 | no |
| Strict homonyms Homonymes stricts |
Merge | Irreducible: needs meaning | RENAME | 1 | no |
| Name-to-address bridge Pont nom ↔ adresse |
Split | Irreducible: needs meaning | RENAME | 1 | no |
| One person in two roles Une personne dans deux rôles |
Merge | Irreducible: needs meaning | DESIGN | 1 | no |
| Entities that change identity Entités qui changent d'identité |
Split | Irreducible: needs meaning | RENAME | 1 | no |
| Facts spread across documents Faits répartis entre documents |
Missing | Irreducible: needs meaning | MOVE | 0 | no |
| Degree of assertion of a link Degré d'affirmation du lien |
Spurious edge | Irreducible: needs meaning | ALTER | 1 | yes |
| Link status: never, or expired Statut du lien : jamais ou révolu |
Anachronism | Irreducible: needs meaning | ALTER | 1 | yes |
| Confusable relation types Confusabilité des types de relation |
Wrong label | Irreducible: needs meaning | RENAME | 1 | partial |
| Hard negatives for typing Négatifs durs de typage |
Wrong label | Irreducible: needs meaning | INSERT | 1 | partial |
| Undated contradiction Contradiction sans date |
Wrong value | Irreducible: needs meaning | ALTER | 1 | no |
| Relative dates Dates relatives |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Density: documents of no interest Densité : documents sans intérêt |
Corpus parameter | Silent false: code cannot see it from inside | INSERT | 1 | no |
| Exact and near duplicates Doublons exacts et quasi-doublons |
Spurious edge | Cancelled by code | DUPLICATE | 1 | yes |
| Successive versions of a document Versions successives d'un document |
Anachronism | Code can abstain on it | DUPLICATE | 1 | yes |
| Cited documents absent from the corpus Documents cités et absents du fonds |
Missing | Code can abstain on it | DELETE | 1 | no |
| Truncated or unreadable documents Documents tronqués ou illisibles |
Missing | Code can abstain on it | DELETE | 0 | no |
| Names damaged by scanning Noms abîmés par le scan |
Split | Code can abstain on it | NOISE | 0 | no |
| Tables with multi-level headers Tableaux à en-têtes multiples |
Spurious edge | Cancelled by code when the source is XML | FORMAT | 1 | yes |
| Several languages in one corpus Plusieurs langues dans un même fonds |
Split | Code can abstain on it | TRANSLATE | 1 | no |
| Genuinely scanned pages Vraies pages scannées |
Missing | Silent false: code cannot see it from inside | IMAGE | 0 | no |
| Incremental ingestion Ingestion incrémentale |
Corpus parameter | Cancelled by code | PARAMETER | 0 | no |
| Document reduced to its title Document réduit à son titre |
Missing | Irreducible: needs meaning | DELETE | 1 | no |
| The title carries the fact Le titre porte le fait |
Missing | Irreducible: needs meaning | MOVE | 1 | no |
| Period typographic conventions Conventions typographiques d'époque |
Split | Irreducible: needs meaning | FORMAT | 1 | no |
| Temporal span of the corpus Étendue temporelle du fonds |
Corpus parameter | Irreducible: needs meaning | PARAMETER | 0 | no |
| Multi-column layout Mise en page multi-colonnes |
Missing | Cancelled by code when the source is XML | FORMAT | 0 | no |
| Bilingual document Document bilingue |
Split | Code can abstain on it | TRANSLATE | 1 | no |
| The fact is in the figure Le fait est dans la figure |
Missing | Irreducible: needs meaning | IMAGE | 1 | no |
| Several documents in one file Plusieurs documents dans un fichier |
Merge | Cancelled by code when the source is XML | DUPLICATE | 1 | no |
| Bibliographic references Références bibliographiques |
Spurious edge | Silent false: code cannot see it from inside | MOVE | 1 | yes |
| Multiple dates on one document Dates multiples d'un même document |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Redundancy between text and table Redondance entre le texte et le tableau |
Corpus parameter | Code can abstain on it | DUPLICATE | 1 | no |
| Values with quantified uncertainty Valeurs avec incertitude quantifiée |
Wrong value | Irreducible: needs meaning | ALTER | 1 | no |
| Content quoted from elsewhere Contenu repris d'ailleurs |
Spurious edge | Irreducible: needs meaning | INSERT | 1 | yes |
| Multiple citation conventions Conventions de citation multiples |
Missing | Code can abstain on it | FORMAT | 1 | no |
| Anonymised entities Entités anonymisées |
Merge | Cancelled by code | RENAME | 1 | no |
| Local and ambiguous date formats Formats de date locaux et ambigus |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Structured abstract in numbered points Résumé structuré en points numérotés |
Missing | Irreducible: needs meaning | FORMAT | 1 | no |
| Scientific notation inside names Notation scientifique dans les noms |
Merge | Silent false: code cannot see it from inside | NOISE | 1 | no |
| Relative quantified relations Relations quantifiées relatives |
Wrong value | Irreducible: needs meaning | ALTER | 1 | no |
| Equipment and supplier entities Entités de matériel et de fournisseurs |
Wrong label | Irreducible: needs meaning | INSERT | 1 | partial |
| Landscape-oriented table Tableau en orientation paysage |
Missing | Cancelled by code when the source is XML | IMAGE | 0 | no |
| The table carries its own definitions Le tableau porte ses propres définitions |
Missing | Irreducible: needs meaning | MOVE | 1 | no |
| Non-atomic cells Cellules non atomiques |
Wrong value | Silent false: code cannot see it from inside | ALTER | 1 | no |
| Non-standard decimal separator Séparateur décimal non standard |
Wrong value | Irreducible: needs meaning | ALTER | 1 | no |
| One compound, several names Un composé, plusieurs noms |
Split | Irreducible: needs meaning | RENAME | 1 | no |
| Mixed units and conventions Unités et conventions mixtes |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Collective entity Entité collective |
Merge | Irreducible: needs meaning | RENAME | 1 | no |
| Complex attributions and affiliations Attributions et affiliations complexes |
Spurious edge | Irreducible: needs meaning | FORMAT | 1 | yes |
| Text-to-figure reference by label Renvoi texte ↔ figure par étiquette |
Missing | Irreducible: needs meaning | MOVE | 1 | no |
| Dense relative chronology Chronologie relative dense |
Anachronism | Code can abstain on it | ALTER | 1 | yes |
| Drop cap Lettrine |
Missing | Cancelled by code when the source is XML | NOISE | 0 | no |
| Content added by digitisation Contenu ajouté par la numérisation |
Spurious edge | Silent false: code cannot see it from inside | INSERT | 1 | yes |
| Editorial metadata Métadonnées éditoriales |
Spurious edge | Silent false: code cannot see it from inside | INSERT | 1 | yes |
| The study type qualifies all its facts Le type d'étude qualifie tous ses faits |
Wrong label | Irreducible: needs meaning | ALTER | 1 | partial |
| Methods as entities with a genealogy Les méthodes sont des entités avec généalogie |
Split | Silent false: code cannot see it from inside | RENAME | 1 | no |
| The three PDF regimes (native, OCR layer, pure image) Les trois régimes de PDF (natif · OCR posé · image pure) |
Missing | Code can abstain on it | IMAGE | 0 | no |
| Sample size written in words L'effectif est écrit en toutes lettres |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Sample size is computed, not stated L'effectif ne se lit nulle part, il se calcule |
Missing | Code can abstain on it | MOVE | 1 | no |
| Furniture language differs from body language La langue du mobilier n'est pas celle du corps |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Significance marker with two meanings Marqueur de significativité à double sens |
Wrong label | Irreducible: needs meaning | ALTER | 1 | partial |
| No apparatus at all Absence totale d'appareil |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Abbreviation dot inside a unit Point abréviatif dans l'unité |
Wrong value | Code can abstain on it | ALTER | 1 | no |
| Signature mark of a gathering Signature de cahier |
Missing | Cancelled by code when the source is XML | NOISE | 0 | no |
| Several DOIs per document Plusieurs DOI par document |
Merge | Cancelled by code | INSERT | 1 | no |
| Partial ORCID ORCID partiel |
Split | Cancelled by code | ALTER | 1 | no |
| Structured abstract Résumé structuré |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Pre-registration identifier Préenregistrement (identifiant de registre) |
Wrong label | Cancelled by code | INSERT | 1 | partial |
| Forest plot as image Forest plot en image |
Wrong value | Irreducible: needs meaning | IMAGE | 1 | no |
| Ordinal scale by colour Échelle ordinale par couleur |
Wrong value | Silent false: code cannot see it from inside | IMAGE | 0 | no |
| Supplementary material cited and absent Matériel supplémentaire cité et absent |
Missing | Code can abstain on it | DELETE | 1 | no |
| Author declarations Déclarations sur les auteurs |
Spurious edge | Cancelled by code | INSERT | 1 | yes |
| Licence on page 1 Licence en page 1 |
Spurious edge | Cancelled by code | INSERT | 0 | yes |
| Open peer-review furniture Mobilier de relecture ouverte |
Spurious edge | Silent false: code cannot see it from inside | INSERT | 1 | yes |
| Crossmark badge (retraction status) Badge Crossmark |
Anachronism | Cancelled by code | ALTER | 1 | yes |
| Unicode traps in native PDF Pièges Unicode du PDF natif |
Split | Cancelled by code | NOISE | 1 | no |
| Coloured hyperlinks carrying a type Hyperliens colorés porteurs de type |
Wrong label | Cancelled by code when the source is XML | IMAGE | 0 | partial |
| Running head with dotted initials Running head à initiales pointées |
Split | Code can abstain on it | RENAME | 1 | no |
| Access format of the document (PDF, HTML, XML) Le format d'accès au document (PDF · HTML · XML) |
Corpus parameter | Cancelled by code | PARAMETER | 1 | no |
| Numbered display equation Équation numérotée en display |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Bare-number reference with ambiguous target Renvoi par numéro nu, cible ambiguë |
Spurious edge | Silent false: code cannot see it from inside | ALTER | 1 | yes |
| Quantifier in a column right of the equation Quantificateur en colonne à droite de l'équation |
Wrong value | Irreducible: needs meaning | FORMAT | 0 | no |
| Numbered theorem whose body is the claim Théorème numéroté dont le corps est l'affirmation |
Missing | Irreducible: needs meaning | MOVE | 1 | no |
| Pseudo-code with double numbering Pseudo-code à double numérotation |
Missing | Cancelled by code when the source is XML | FORMAT | 0 | no |
| Structured object presented as a figure Objet structuré présenté comme figure |
Missing | Irreducible: needs meaning | MOVE | 1 | no |
| Acronym defined by typography alone Sigle défini par la typographie seule |
Split | Silent false: code cannot see it from inside | FORMAT | 1 | no |
| Repository cover page prepended to the article Couverture de dépôt ajoutée devant l'article |
Spurious edge | Cancelled by code when the source is XML | INSERT | 0 | yes |
| Two conflicting paginations Deux paginations en conflit |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Display mathematics inside the abstract Le résumé contient des mathématiques en display |
Missing | Cancelled by code when the source is XML | FORMAT | 0 | no |
| Clickable zone differs from semantic unit Zone cliquable ≠ unité sémantique |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| HTML fragments the text Le format html fragmente le texte |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Page 1 is not representative Page 1 non représentative |
Spurious edge | Cancelled by code when the source is XML | INSERT | 0 | yes |
| Translated verbatim Verbatim traduit |
Wrong value | Silent false: code cannot see it from inside | TRANSLATE | 1 | no |
| Columns of different natures Colonnes de natures différentes |
Spurious edge | Silent false: code cannot see it from inside | FORMAT | 1 | yes |
| Three kinds of number in one string Trois natures de nombre dans une chaîne |
Wrong value | Silent false: code cannot see it from inside | ALTER | 1 | no |
| Mnemonic superscript that is not a power Exposant mnémonique qui n'est pas une puissance |
Wrong value | Silent false: code cannot see it from inside | ALTER | 1 | no |
| Citation with internal locator Citation avec localisateur interne |
Missing | Cancelled by code when the source is XML | FORMAT | 1 | no |
| Editorial status printed in the document Statut éditorial imprimé dans le document |
Anachronism | Silent false: code cannot see it from inside | ALTER | 1 | yes |
| Multiple abstracts from different registries Résumés multiples de registres différents |
Missing | Cancelled by code when the source is XML | DUPLICATE | 1 | no |
| Species-split gene identities |
Split | Unclassified | RENAME | 1 | no |
| Gene annotation cliff after 2023 |
Missing | Unclassified | DELETE | 1 | no |
| Un-normalised chemical bucket |
Merge | Unclassified | RENAME | 1 | no |
| Two overlapping identifier spaces in one column |
Wrong label | Unclassified | ALTER | 1 | partial |
| Entity with no normalised identity (drug hidden in the bucket) |
Split | Unclassified | RENAME | 1 | no |
| Retro-indexing of a MeSH descriptor onto older articles |
Anachronism | Unclassified | ALTER | 1 | yes |
| No absolute clock in the record (dates are revision bounds) |
Wrong value | Unclassified | ALTER | 1 | no |
| Two publication dates per record (print vs electronic) |
Wrong value | Unclassified | ALTER | 1 | no |
| Author keywords missing on most records |
Missing | Unclassified | DELETE | 1 | no |
| Same object under several author spellings (acronym, plural, appended acronym) |
Split | Unclassified | RENAME | 1 | no |
| Publication type or institutional tag used as a topic keyword |
Wrong label | Unclassified | INSERT | 1 | partial |
| One real-world event, many nodes (vocabulary satellites) |
Split | Unclassified | RENAME | 1 | no |
| New MeSH label for an old science |
Anachronism | Unclassified | INSERT | 1 | yes |
| Retraction status not linked to the retracted record |
Anachronism | Unclassified | DELETE | 1 | yes |
| Citation targets outside the snapshot, and identifiers beyond 32 bits |
Missing | Unclassified | DELETE | 1 | no |
| Annotations for records newer than the frozen snapshot (false recent decline) |
Missing | Unclassified | DELETE | 1 | no |
| Anonymous typed mentions (surface only, no dictionary entry) |
Missing | Unclassified | DELETE | 1 | no |
| Indexing source switch (human to automated) inside one field |
Wrong label | Unclassified | ALTER | 1 | partial |
| Lag between a term's use and its descriptor (concept exists before its label) |
Missing | Unclassified | DELETE | 1 | no |
| Author-declared affiliation country, detected by pattern |
Wrong value | Unclassified | ALTER | 1 | no |
| Funding acknowledgements: identifiers free-form, agencies multi-spelled |
Split | Unclassified | RENAME | 1 | no |
| External vocabulary frozen in time (closed keyword list) |
Missing | Unclassified | PARAMETER | 1 | no |
| Homonymy in a reference registry (agency identifiers) |
Merge | Unclassified | ALTER | 0 | no |
| Closed machine-assigned keyword vocabulary (OpenAlex) |
Missing | Unclassified | PARAMETER | 1 | no |
| Missing publication month defaulted to January (OpenAlex) |
Wrong value | Unclassified | ALTER | 1 | no |
| Nested field read at the wrong level (institutions under authorships) |
Missing | Unclassified | FORMAT | 1 | no |
| Multilingual corpus mixed without a language filter (OpenAlex) |
Split | Unclassified | TRANSLATE | 1 | no |
| Domain assigned from the record's primary topic, not from the keyword |
Wrong label | Unclassified | ALTER | 1 | partial |
| Snapshot contains merged, retracted and paratext records (OpenAlex) |
Merge | Unclassified | DUPLICATE | 1 | no |
| Funded projects without text (OpenAIRE, NIH) |
Missing | Unclassified | DELETE | 1 | no |
| Impossible or placeholder dates in project records (OpenAIRE) |
Wrong value | Unclassified | ALTER | 1 | no |
| Empty funder jurisdiction |
Missing | Unclassified | DELETE | 1 | no |
| Inferred relations mixed with declared ones (OpenAIRE) |
Spurious edge | Unclassified | INSERT | 1 | yes |
| Article titles stored as entity labels (Wikidata) |
Wrong label | Unclassified | INSERT | 1 | partial |
| Same writing on several entities, no sense chosen (Wikidata) |
Merge | Unclassified | RENAME | 1 | no |
| Item number mistaken for a creation date (Wikidata) |
Wrong value | Unclassified | ALTER | 1 | no |
| Drug names verbatim, active ingredient field absent in early years (FAERS) |
Split | Unclassified | RENAME | 1 | no |
| Mixed character encodings across quarterly files (FAERS) |
Wrong value | Unclassified | NOISE | 1 | no |
| Case versions: one case, many records (FAERS) |
Split | Unclassified | DUPLICATE | 1 | no |
| Litigation- and media-driven report waves (FAERS) |
Spurious edge | Unclassified | INSERT | 1 | yes |
What a record says
Seven damages
What a fault does to the graph: merge, split, spurious edge, missing, wrong value, wrong label, anachronism. The 113 difficulties observed in August 2026, however different they look, each produce one of these. Verified line by line.
Four classes
Whether deterministic code cancels the form before it enters the graph, can abstain on it, cannot see it from inside, or whether it needs meaning. Half of what was observed is cancelled by code once; the other half is the real benchmark.
Provenance, not opinion
A form enters with a verbatim excerpt from a named corpus, a date, an observer. Cases come with counter-examples. A refuted form stays, marked refuted. Nothing is deleted.
Why it matters
Graph repair is evaluated against constraints the graph must satisfy, not against what is true. The atlas is half of an answer key: the map of forms by damage, with the kind of truth that can judge each. The other half, the truth itself, is built on it.
Met a form on your corpus? Propose it with its excerpt, corpus and date — no code, no account. Or, if you prefer, open an issue or a pull request on GitHub. A second reader reviews; a contested form stays recorded as contested; nothing enters unreviewed. Cite: Gracia S., Bagnol-Lebon C., Comtet Y. (2026). Fault Atlas. Loxyn SAS, Lyon. Zenodo. doi:10.5281/zenodo.22674547.