Repair strategies
RO-Crate Excel Server automatically fixes a small set
of unambiguous spreadsheet issues before handing the workbook to
ro-crate-excel. Every repair is reported as a
repaired warning on
/convert?report=1, so no change to your data happens
silently. We also apply a few
silent cleanups that remove harmless
artifacts left by the library itself — these lose no data and are
not reported as warnings. This page documents what we change and why.
Unbracketed reference list
What it fixes. A cell that lists several
#-references separated by commas, but without the square
brackets that ro-crate-excel needs in order to split them.
Why. ro-crate-excel only treats a cell as a list of
references when it is wrapped in [ ]. Without them the
whole cell is kept as a single value, producing one broken
@id that joins two identifiers with a comma — and the
second reference is lost.
How. When every comma-separated token in a plain cell
starts with #, we wrap the value in [ ] so
ro-crate-excel's own splitter produces one reference per token. Cells
that are already bracketed, or whose tokens are not all
#-references (such as ordinary prose), are left untouched.
Example
| Cell before | Cell after |
|---|---|
#Person_a, #Person_b |
[#Person_a, #Person_b] |
Which changes the resulting crate from:
"contributor": { "@id": "#Person_a, #Person_b" }
to:
"contributor": [
{ "@id": "#Person_a" },
{ "@id": "#Person_b" }
]
Boolean values stored as text
What it fixes. A flag such as
isPublishable whose value is the text
"TRUE" or "FALSE" (as Excel writes booleans)
rather than a real boolean.
Why. The string "FALSE" is
truthy in most programming languages, so code that gates on
isPublishable would treat a not-publishable item as
publishable — the opposite of what the sender intended.
How. When a property name starts with is,
has, or can followed by a capital letter (for
example isPublishable, hasConsent,
canDownload) and its value is exactly true or
false (any case), we replace the text with the matching
boolean. Reference-valued properties such as isBasedOn hold
an @id rather than the word, so they are never affected.
Example
| Value before | Value after |
|---|---|
"isPublishable": "FALSE" |
"isPublishable": false |
Silent cleanups
Unlike the repairs above, these remove artifacts produced by ro-crate-excel rather than fixing anything in your spreadsheet. They lose no data, so they are applied silently — you will not see a repaired warning for them.
Empty isRef_ reference columns
What it fixes. Properties such as
isRef_author or isRef_license left on an
entity with an empty value.
Why. An isRef_ column tells ro-crate-excel
that the cell holds a reference to another entity; the library strips
the isRef_ prefix and turns the value into a link. That
conversion only happens when the cell has a value, so a blank reference
column is passed straight through as a literal
isRef_author: "". With the crate's
@vocab mapping this expands to a meaningless
schema.org term, which can confuse generic RO-Crate tools.
How. After conversion we drop any property whose name
starts with isRef_ and whose value is empty. Columns that
actually contain a reference are converted normally by the library and
are never touched.
Example
The root entity changes from:
{
"@id": "./",
"name": "BKRLCC PROMOTIONAL VIDEOS",
"isRef_license": "",
"isRef_author": ""
}
to:
{
"@id": "./",
"name": "BKRLCC PROMOTIONAL VIDEOS"
}