Q38, run 2026-11-04-1752-haiku
Which institutions is W71 credited to, at every level?
Tests: Local rule on affiliations, then the hierarchy: the Tessel Laboratory is listed last, so Halloran gets nothing.
Expected: institutions = ['I01', 'I02', 'I03', 'I04']
csv run 1
I04 and I06 directly, and their ancestors I03, I02 and I01. That is I01, I02, I03, I04 and I06.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
csv run 2
I06, I04, I03, I02, I01. W71 is credited to I06 and I04, which sit under I02, I03 and I01.
JSON: {"institutions": ["I06", "I04", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I06', 'I04', 'I03', 'I02', 'I01']
csv run 3
I01, I02, I03, I04, I06. W71 is credited to I06 (which sits under I02 under I01) and I04 (which sits under I03, I02 and I01).
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
csv run 4
I04 and I06 directly, plus their ancestors I03, I02 and I01.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
csv run 5
I01, I02, I03, I04 and I06. W71 is credited directly to I06 and I04, which roll up through I02 and I03 to I01.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
rdf run 1
I04 and I06, plus their ancestors I03, I02 and I01, because credit rolls up through parents.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
rdf run 2
I04 and I06 directly, plus their ancestors I03, I02 and I01.
JSON: {"institutions": ["I04", "I06", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I04', 'I06', 'I03', 'I02', 'I01']
rdf run 3
I04 and I06, plus their ancestors I03, I02 and I01. Both affiliations of W71 are listed at every level.
JSON: {"institutions": ["I04", "I06", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I04', 'I06', 'I03', 'I02', 'I01']
rdf run 4
I01, I02, I03, I04 and I06. W71 is credited to I06 (I06 → I02 → I01) and I04 (I04 → I03 → I02 → I01).
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
rdf run 5
I01, I02, I03, I04 and I06. W71's author A08 has I06 (→ I02 → I01) and I04 (→ I03 → I02 → I01).
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
rdf+ontology run 1
I04, I03, I02 and I01. The last-listed affiliation on W71 is seq 2, Tessel Laboratory (I04), and its units and parents follow from it.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
rdf+ontology run 2
I04, I03, I02, I01. The highest affiliation sequence (I04) is the one credited, and I04's parent chain runs up to I01. The ignored I06 is not included.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
rdf+ontology run 3
I04, I03, I02 and I01. W71's last affiliation is I04 (seq 2), and I04's parent chain runs up to I01.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
rdf+ontology run 4
I04, I03, I02 and I01. The last-listed affiliation is I04, and it rolls up through I03 → I02 → I01.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
rdf+ontology run 5
I04, I03, I02 and I01. The last affiliation is I04, and its ancestors are credited too.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+ontology run 1
I01, I02, I03 and I04. W71 lists I06 (seq 1) and I04 (seq 2), so I04 counts, and so do its parents.
JSON: {"institutions": ["I01", "I02", "I03", "I04"]}
csv+ontology run 2
I04, I03, I02, I01. W71's last affiliation (seq 2) is I04, which rolls up through its parents to the system.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+ontology run 3
I04, I03, I02, I01. W71's last affiliation is I04, and the parent chain runs upward from there.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+ontology run 4
I04, I03, I02 and I01. W71's last-listed affiliation is I04 (seq 2), and I04 rolls up through the hierarchy.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+ontology run 5
I04, I03, I02 and I01. The last-listed affiliation is I04, and its units above it are I03, I02 and I01.
JSON: {"institutions": ["I01", "I02", "I03", "I04"]}
csv+markdown run 1
I04, I03, I02, I01. The last-listed affiliation is I04 (seq 2), and its parent chain runs through I03, I02 and I01.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+markdown run 2
I04, I03, I02, I01. W71's last-listed affiliation is I04 (seq 2), so it is credited to I04 and each parent above it. The I06 affiliation at seq 1 is ignored.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+markdown run 3
I04, I03, I02, I01. W71's last-listed affiliation is I04 (seq 2), and the work rolls up through its parents; I06 (seq 1) is ignored.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+markdown run 4
I04, I03, I02, I01. W71's credit is I04 at sequence 2 (I06 at sequence 1 is ignored), and it propagates up the chain to I01.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+markdown run 5
I04, I03, I02 and I01. W71's last affiliation is I04, which rolls up through its parents.
JSON: {"institutions": ["I04", "I03", "I02", "I01"]}
csv+padding run 1
I04, I06, I03, I02 and I01. W71 is credited to I06 and I04, and I include all their parents.
JSON: {"institutions": ["I04", "I06", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I04', 'I06', 'I03', 'I02', 'I01']
csv+padding run 2
Direct: I04 and I06. With ancestors: I01, I02, I03, I04 and I06.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']
csv+padding run 3
I04, I06, I03, I02, I01. W71 is credited to I06 and I04, and their ancestors are I03, I02 and I01.
JSON: {"institutions": ["I04", "I06", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I04', 'I06', 'I03', 'I02', 'I01']
csv+padding run 4
I04, I06, I03, I02, I01. A08 on W71 lists I06 and I04, and the ancestors of those are I03, I02 and I01.
JSON: {"institutions": ["I04", "I06", "I03", "I02", "I01"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I04', 'I06', 'I03', 'I02', 'I01']
csv+padding run 5
I04, I06, and their parents I03, I02 and I01. W71's author A08 is credited to I06 and I04.
JSON: {"institutions": ["I01", "I02", "I03", "I04", "I06"]}
Why: institutions: expected ['I01', 'I02', 'I03', 'I04'], got ['I01', 'I02', 'I03', 'I04', 'I06']