passagedata
What we mean when we refuse a column
When we cannot interpret something in your file, we say so and stop — we never
guess, because a wrong interpretation is impossible to tell from a right one once it is
published. Every refusal carries one of the codes below.
Most files produce a handful of these, not hundreds: each one is a decision about a
whole column rather than about a row. A refusal is not a rejection of your data — it is the part
of the report that tells you what still needs a human.
130 codes in 27 groups. This page is generated from the same registry the checker
emits from, so it cannot drift from what you were actually told.
Opening the file
file.bad_container- the .gz/.zip wrapper itself would not open
file.empty- readable, and there is nothing in it
file.legacy_binary_excel- a pre-2007 binary .xls (OLE2 compound document), which we do not parse — re-saving as .xlsx is the whole fix
file.unreadable- no table could be produced from these bytes at all
file.web_page_not_data- the upload is an HTML web page (sign-in / error / cookie wall), not a data file — an ACQUISITION failure, not a reader gap
Character encoding
encoding.not_utf8- the bytes are not UTF-8 and the fallback is a guess
encoding.undecodable- no encoding in the declared ladder could decode the bytes at all — distinct from `encoding.not_utf8`, which DID decode on a fallback
Zip archives
zip.ambiguous_layers- several SHAPEFILE LAYERS, each readable, and no declaration of which is meant — a chooser, not a reader
zip.ambiguous_members- several tables and no declaration of which is meant
zip.layer_choice_unknown- a shapefile layer was CHOSEN by id and no layer in the zip has that id — the answer channel is stale, not the reader
zip.member_choice_unknown- a zip member was CHOSEN by id and no readable member of the zip has that id — the answer channel is stale, not the reader
zip.no_tabular_member- a zip with nothing we read inside it
zip.too_large_uncompressed- the archive expands past the parser's bound — a COMPRESSED byte cap does not bound this
Excel workbooks
xlsx.multi_sheet_first_taken- several sheets with DIFFERENT headers; counts describe the first only
xlsx.no_worksheet- an .xlsx with no worksheet (probably .xlsb or a macro workbook)
xlsx.parallel_sheets- one table split across tabs — the subject is the SHEET NAME
xlsx.shared_strings_unreadable- text cells will be empty
xlsx.styles_unreadable- dates cannot be told from numbers
JSON structure
json.nested_not_flattened- arrays/objects below the flatten depth were not exposed
PDFs
pdf.ambiguous_tables- several DIFFERENT tables in one PDF — which one is the data is the depositor's to say, not ours to guess
pdf.encrypted- encrypted — we hold no key and will not attempt one
pdf.invisible_text- render-mode-3 text (the OCR-layer tell)
pdf.not_a_pdf- the signature is not a PDF
pdf.partial_page_coverage- the table was read from some of the PDF's pages, not all of them — a short read that must never look like a whole one
pdf.prose_not_table- running prose, not a table
pdf.rotated_text- rotated/sheared text, not projected flat
pdf.scanned- a page image, not text — OCR is a DECLARED rung we have not built
pdf.signals_contradict- ruled lines and whitespace disagree about the columns
pdf.table_choice_unknown- a table was CHOSEN by id and no table in the document has that id — the answer channel is stale, not the reader
pdf.too_few_lines- fewer lines than a header plus a record
pdf.unmappable_glyphs- runs whose font encoding we could not map, dropped rather than emitted
Darwin Core Archives you upload
dwca.core_is_not_occurrence- the declared core is an EVENT (or other) table — the species are in an extension
dwca.core_read_extensions_dropped- a Darwin Core Archive: we read its declared core and set the extensions aside
Finding the header row
header.caption_not_names- rows span the columns, but every one reads as sliced running text rather than a set of column names
header.duplicate- the same header appears more than once
header.not_full_width- no row is wide enough to be the header
header.preamble_rows- title/blank rows above the real header
Individual rows
row.field_unparsed- a single row's value did not parse for its term — a ROW event, not a column one
row.not_landable- the row lacks the minimum (coordinate + date) to be placeable
row.ragged- rows disagree with the header on column count
Matching your columns to Darwin Core
term.ambiguous_header- several columns token-match and none matches exactly
Values that contradict their header
value.atomised_date_conflict- year/month/day contradicts eventDate — GBIF flags the record twice and trusts neither
value.column_empty- the column exists but holds no values at all — ABSENT, which is not the same as invalid and must never be reported as one
value.date_is_file_stamp- a date column carrying ONE distinct value across every sampled row — an export stamp, not a per-observation date
value.fused_terms- one cell holding several Darwin Core terms at once — REFUSED, never parsed, because separating them means inventing which number belongs to which description
value.insufficient- too few values to decide — NOT evidence of absence
value.no_admissible_candidate- several columns token-match a term and NOT ONE of their value sets is admissible for it — there is nothing to choose between, so no question is worth asking
value.not_count- a count column that is not non-negative numeric
value.not_date- a date column nothing in which parsed
value.not_in_vocabulary- values outside the term's controlled vocabulary
value.not_integer- an integer-typed DwC term carrying a non-integer — GBIF drops the field rather than rounding it
value.numeric_not_prose- a prose term whose values are entirely numeric
value.out_of_range- the column's values contradict the term its header names
value.refused_other- a value check refused it and the reason is in the message
value.uncorroborated_count- a token-only `count` match whose header carries an unexplained modifier; the values cannot corroborate either reading
value.wrong_cardinality- an identifier whose repetition contradicts the term
value.zero_coordinate- a 0,0 coordinate pair — a missing-value sentinel emitted as a position
Species names
taxon.authorship_veto- a taxon column carrying nomenclatural authorship lost to a cleaner one
taxon.carried_verbatim- a species column the DEPOSITOR named, carried as `verbatimIdentification` because we could not corroborate its values — no scientific name is asserted
taxon.rank_refinement_applied- two taxon columns; the finer one was chosen
Grid references
gridref.malformed- not a British National Grid reference at all — 100 km letters outside the grid, the letter I (which the grid does not use), or an odd number of digits (a ref splits evenly into easting and northing)
gridref.recognised_not_decoded- a coordinate system we DO decode whose values did not decode — almost always a projected CRS in metres, not degrees
gridref.unsupported_form- a well-formed British grid reference in a form we deliberately do not decode — a DINTY tetrad (SK98A), a quadrant (SK98NW), or more than 10 digits. REFUSED rather than widened to the enclosing square, which would discard the precision the recorder wrote
Packed coordinates
packed.axis_by_convention- a packed pair whose members are both within ±90, so the values cannot say which is latitude — read latitude-first BY CONVENTION, tiered down, and ASKED about
packed.unparseable- a packed coordinate column nothing in which parsed as a pair
Controlled vocabularies
vocabulary.source_unavailable- a SOURCED vocabulary artifact we depend on was not available, so the mouth ran without it — this is OUR degradation, not a defect in your file, and nothing you can fix
Answers you gave us
choice.unknown_header- the depositor answered a disambiguation with a column the file lacks
Publication metadata
eml.metadata_incomplete- the archive cannot be PUBLISHED until facts only the depositor has (creator, description, licence) are supplied
Building the archive
archive.core_discards_data- this file carries dates or coordinates, which a checklist archive has nowhere to put — converting it would silently drop them
archive.core_is_not_occurrence- the archive's own meta.xml declares a non-occurrence core, so an occurrence archive would mint an observation per row
archive.metadata_not_an_object- depositor metadata arrived as something other than a JSON object
archive.metadata_unparseable- the depositor metadata was not valid JSON — REFUSED rather than ignored, so our parse failure cannot read as their gap
archive.no_data_from_file- the file was read and NOTHING in it reached the archive — every emitted value would be one we minted or defaulted ourselves
archive.only_dataset_metadata- every value we could carry describes the DATASET (its name, holder or licence) and none describes a record
archive.too_many_rows- above §B.3's automated ceiling — this size is QUOTED, and slicing it silently would hand back a partial archive that looks complete
Payment
payment.required- the archive for this submission has not been paid for (§B.3)
Upload limits
upload.refused- refused before parsing, by the abuse budget
Uncoded — a defect on our side
UNCODED- ⚠ emitted without a code — a site that has not been migrated; this is a DEFECT
Other
corpus.not_recorded- we did not keep our own SHAPE note from this upload — the mapping learner declined it. Your file, your report and your archive are unaffected; nothing of yours was retained either way (invariant #61)
crs.absent- no coordinate system declared at all
crs.authority_absent- the file names no authority code for its own CRS
crs.axis_order_declared- the CRS declares an axis order — a consumer-facing hazard
crs.datum_absent- a CRS naming no datum — the fact a coordinate is meaningless without
crs.ellipsoid_absent- no ellipsoid parameters, so the shape cannot be checked
crs.ellipsoid_unknown- ellipsoid parameters matching none we hold
crs.kind_unsupported- a CRS kind this reader does not classify
crs.projected- coordinates in linear units, NOT degrees
crs.unit_absent- no unit, so a coordinate's magnitude is undefined
crs.unit_unrecognised- a unit whose conversion factor we do not hold
crs.unparseable- a declaration present that is not WKT we can read
delimiter.ambiguous- several delimiters fit equally; refused rather than picking one
delimiter.none- no delimiter split the sample into a consistent >1 column count — this is not a delimited table at all
geo.bundle_incomplete- a shapefile bundle missing a sidecar we need
geo.cpg_absent- no .cpg — the attribute character set is a guess
geo.datum_is_not_wgs84- degrees on a datum that is NOT WGS 84 — the quiet failure
geo.datum_unrecognised- a declared datum whose spelling we do not hold
geo.dbf_absent- geometry with no attribute table at all
geo.dbf_row_count_disagrees- the .dbf and .shp hold different record counts
geo.dbf_unsupported_version- a dBASE layout we refuse rather than mis-parse
geo.encoding_guessed- attribute text decoded with a guessed character set
geo.encoding_undecodable- attribute bytes that will not decode under the chosen set
geo.field_name_collision- field names a 10-character cap would have made identical
geo.field_name_truncation_suspected- a field name at the 10-character cap — the original spelling is unrecoverable, which is the strongest case for confirming a column from its VALUES
geo.hole_larger_than_shell- a hole ring larger than every shell — geometrically impossible
geo.no_data_coordinate- a coordinate at the specification's 'no data' sentinel
geo.prj_absent- no .prj — the file never says what its coordinates MEAN
geo.ring_not_closed- a ring whose last vertex is not its first — the spec requires closure
geo.ring_too_few_vertices- a ring with fewer than the four vertices a ring requires
geo.ring_winding_dirty- a polygon with no clockwise ring, so it declares no exterior
geo.ring_zero_area- a ring enclosing nothing
geo.shape_type_mixed- records carry a type the header did not declare
geo.shape_type_unknown- a shape type outside the specification's enumeration
geo.shp_bad_magic- the .shp does not open with file code 9994
geo.shp_length_disagrees- the header's declared length is not the bytes on disk
geo.shp_truncated- the .shp ends mid-record
geo.shx_absent- no .shx index; offsets were derived by walking the .shp
geo.shx_disagrees- index and main file disagree on the record count
gpkg.ambiguous_layers- several readable layers; naming them beats picking one
gpkg.blob_column_opaque- a binary attribute column carried as empty cells, and said so
gpkg.contents_missing- no gpkg_contents table, which the standard requires
gpkg.contents_orphan- a declared layer whose table does not exist in the file
gpkg.geometry_blob_malformed- a geometry BLOB outside the GeoPackage binary layout
gpkg.geometry_column_undeclared- a features layer with no gpkg_geometry_columns row
gpkg.geometry_kind_unsupported- a geometry kind we do not read (collections, curves, extended encodings)
gpkg.layer_choice_unknown- the layer answer names nothing in this file
gpkg.no_layers- gpkg_contents declares no feature or attribute layer
gpkg.not_geopackage- a SQLite database without the GeoPackage stamp — no layer contract
gpkg.srs_missing- a layer srs_id with no gpkg_spatial_ref_sys row behind it
gpkg.unreadable- SQLite could not open or walk the file (corrupt, or encrypted)
matrix.taxa_unanswerable- a wide species matrix was detected and the legend we were given could not be used, so the file was read exactly as it arrived