← back to CelebritySignatures
auto-save: 2026-08-03T20:57:17 (5 files) — output/collage-declaration-of-independence-named.png output/collage-declaration-of-independence.png output/collage-politics-named.png output/collage-politics.png scripts/fetch-artists.mjs
b3945999d06a15610f1c7e66f6f6b6bfc55896b6 · 2026-08-03 20:57:25 -0700 · Steve Abrams
Files touched
M output/collage-declaration-of-independence-named.pngM output/collage-declaration-of-independence.pngM output/collage-politics-named.pngM output/collage-politics.pngM scripts/fetch-artists.mjs
Diff
commit b3945999d06a15610f1c7e66f6f6b6bfc55896b6
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Aug 3 20:57:25 2026 -0700
auto-save: 2026-08-03T20:57:17 (5 files) — output/collage-declaration-of-independence-named.png output/collage-declaration-of-independence.png output/collage-politics-named.png output/collage-politics.png scripts/fetch-artists.mjs
---
.../collage-declaration-of-independence-named.png | Bin 673944 -> 222226 bytes
output/collage-declaration-of-independence.png | Bin 615467 -> 186382 bytes
output/collage-politics-named.png | Bin 484229 -> 224252 bytes
output/collage-politics.png | Bin 436870 -> 182557 bytes
scripts/fetch-artists.mjs | 34 +++++++++++++++++++--
5 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/output/collage-declaration-of-independence-named.png b/output/collage-declaration-of-independence-named.png
index 9fe7a04..9aa3c51 100644
Binary files a/output/collage-declaration-of-independence-named.png and b/output/collage-declaration-of-independence-named.png differ
diff --git a/output/collage-declaration-of-independence.png b/output/collage-declaration-of-independence.png
index 0cb1865..3888a9a 100644
Binary files a/output/collage-declaration-of-independence.png and b/output/collage-declaration-of-independence.png differ
diff --git a/output/collage-politics-named.png b/output/collage-politics-named.png
index 70e604b..5483934 100644
Binary files a/output/collage-politics-named.png and b/output/collage-politics-named.png differ
diff --git a/output/collage-politics.png b/output/collage-politics.png
index d3d4693..324ac22 100644
Binary files a/output/collage-politics.png and b/output/collage-politics.png differ
diff --git a/scripts/fetch-artists.mjs b/scripts/fetch-artists.mjs
index 5dca7bf..8cd1c44 100644
--- a/scripts/fetch-artists.mjs
+++ b/scripts/fetch-artists.mjs
@@ -100,17 +100,47 @@ async function sparql(q, tries = 5) {
}
}
+// Second harvest path: P6379 "has works in the collection" is a DIRECT
+// person→museum link, far denser than artwork→P195 (which is sparsely itemized,
+// esp. for European museums like the Rijksmuseum). This is what actually pulls
+// the Amsterdam/Dutch masters in. Same output columns; unioned with P195.
+function queryFor6379(museumQids) {
+ const vals = museumQids.map(q => `wd:${q}`).join(' ');
+ return `
+SELECT ?person ?personLabel ?sig ?dod ?links
+ (GROUP_CONCAT(DISTINCT ?museumLabel; separator="|") AS ?museums)
+ (GROUP_CONCAT(DISTINCT ?occLabel; separator="|") AS ?occs)
+WHERE {
+ VALUES ?museum { ${vals} }
+ ?person wdt:P6379 ?museum ; wdt:P109 ?sig ; wdt:P570 ?dod ; wikibase:sitelinks ?links .
+ FILTER(YEAR(?dod) < 1974)
+ OPTIONAL { ?person wdt:P106 ?occ . ?occ rdfs:label ?occLabel . FILTER(LANG(?occLabel)="en") }
+ ?museum rdfs:label ?museumLabel . FILTER(LANG(?museumLabel)="en")
+ SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
+}
+GROUP BY ?person ?personLabel ?sig ?dod ?links
+ORDER BY DESC(?links)`;
+}
+
const ALL_QIDS = Object.keys(MUSEUMS);
const rows = [];
for (let i = 0; i < ALL_QIDS.length; i += 3) {
const batch = ALL_QIDS.slice(i, i + 3);
- process.stdout.write(`[museums ${i + 1}-${i + batch.length}/${ALL_QIDS.length}] ${batch.map(q => MUSEUMS[q]).join(', ')} … `);
+ process.stdout.write(`[P195 ${i + 1}-${i + batch.length}/${ALL_QIDS.length}] ${batch.map(q => MUSEUMS[q]).join(', ')} … `);
const r = await sparql(queryFor(batch));
rows.push(...r);
console.log(`${r.length} rows (total ${rows.length})`);
await sleep(1500);
}
-console.log(`raw rows: ${rows.length}`);
+for (let i = 0; i < ALL_QIDS.length; i += 3) {
+ const batch = ALL_QIDS.slice(i, i + 3);
+ process.stdout.write(`[P6379 ${i + 1}-${i + batch.length}/${ALL_QIDS.length}] ${batch.map(q => MUSEUMS[q]).join(', ')} … `);
+ const r = await sparql(queryFor6379(batch));
+ rows.push(...r);
+ console.log(`${r.length} rows (total ${rows.length})`);
+ await sleep(1500);
+}
+console.log(`raw rows (P195 + P6379): ${rows.length}`);
// One record per person; Special:FilePath URL is directly usable as an <img> src.
const seen = new Set();
← 4e31653 Amsterdam haul via P6379: +110 net Artists (1262→1372), site
·
back to CelebritySignatures
·
Cody-gate fix (verified, proportionate): server art-occupati 681aafe →