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"
}