vocabmerge: a subject scheme, supplied rather than compiled in

This commit is contained in:
funkpower
2026-09-19 19:06:57 -04:00
parent 05b363ea8a
commit 484017fc18
9 changed files with 801 additions and 2 deletions
+67
View File
@@ -0,0 +1,67 @@
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-0", "kind": "canonical", "tag": "Philosophy"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-1", "kind": "canonical", "tag": "philosophy"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-2", "kind": "canonical", "tag": "PHILOSOPHY"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-3", "kind": "canonical", "tag": " Philosophy "}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-4", "kind": "canonical", "tag": "Philosophie"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-5", "kind": "canonical", "tag": "SF"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-6", "kind": "canonical", "tag": "sf"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-7", "kind": "canonical", "tag": "Sci-Fi"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-8", "kind": "canonical", "tag": "General"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-9", "kind": "canonical", "tag": "general"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-10", "kind": "canonical", "tag": "[General]"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-11", "kind": "canonical", "tag": "*Misc*"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-12", "kind": "canonical", "tag": "Humanities"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-13", "kind": "canonical", "tag": "ebook"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-14", "kind": "canonical", "tag": "Underwater Basketry"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-15", "kind": "canonical", "tag": ""}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-16", "kind": "canonical", "tag": " "}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-17", "kind": "canonical", "tag": "Church History"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-18", "kind": "canonical", "tag": "Lit Crit"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-19", "kind": "canonical", "tag": "[Philosophy]"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-20", "kind": "canonical", "tag": "*Philosophy*"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-21", "kind": "canonical", "tag": "Non-Fiction"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-22", "kind": "canonical", "tag": "nonfiction"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-23", "kind": "canonical", "tag": "Theology."}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "canonical-24", "kind": "canonical", "tag": "Fiction"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-25", "kind": "parents", "subjects": ["Phenomenology"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-26", "kind": "parents", "subjects": ["Philosophy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-27", "kind": "parents", "subjects": ["History", "Philosophy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-28", "kind": "parents", "subjects": ["Basketry"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-29", "kind": "parents", "subjects": ["Literary Criticism"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-30", "kind": "parents", "subjects": ["Phenomenology", "Literary Criticism"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-31", "kind": "parents", "subjects": []}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-32", "kind": "parents", "subjects": ["Fiction", "Science Fiction"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-33", "kind": "parents", "subjects": ["Philosophy", "Philosophy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "parents-34", "kind": "parents", "subjects": ["Fantasy", "Phenomenology"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-35", "kind": "fiction", "subjects": ["Biography", "Fiction"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-36", "kind": "fiction", "subjects": ["Fiction", "History"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-37", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "War and Peace"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-38", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "The Cambridge Companion to Nietzsche"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-39", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "Logic: A Very Short Introduction"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-40", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "A Life of Wrangel"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-41", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "The Diary of a Writer"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-42", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "Collected Letters of Paul"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-43", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "Memoirs of a Geisha"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-44", "kind": "fiction", "subjects": ["Fiction", "History"], "title": "Essays in Idleness"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-45", "kind": "fiction", "subjects": ["Science Fiction", "Fantasy", "Biography"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-46", "kind": "fiction", "subjects": ["Literary Criticism", "Fantasy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-47", "kind": "fiction", "subjects": ["Fiction"], "title": "An Autobiography"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-48", "kind": "fiction", "subjects": ["Fiction"], "title": "Lectures on Ethics"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-49", "kind": "fiction", "subjects": ["Fiction"], "title": "Speeches"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-50", "kind": "fiction", "subjects": ["Fiction"], "title": "The Guidebook to Kant"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "fiction-51", "kind": "fiction", "subjects": ["Fiction"], "title": "Ordinary Title"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "compose-52", "kind": "compose", "subjects": ["Phenomenology", "Fiction"], "title": "A Life of Husserl"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "compose-53", "kind": "compose", "subjects": ["Phenomenology", "Fiction"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "compose-54", "kind": "compose", "subjects": ["Literary Criticism", "Fiction"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "compose-55", "kind": "compose", "subjects": ["Basketry", "Fiction"], "title": "A Life of Someone"}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "compose-56", "kind": "compose", "subjects": []}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-57", "kind": "needs", "existing": []}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-58", "kind": "needs", "existing": ["General"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-59", "kind": "needs", "existing": ["General", "ebook"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-60", "kind": "needs", "existing": ["Philosophy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-61", "kind": "needs", "existing": ["General", "Philosophy"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-62", "kind": "needs", "existing": ["Underwater Basketry"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-63", "kind": "needs", "existing": ["SF"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-64", "kind": "needs", "existing": ["sf", "General"]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-65", "kind": "needs", "existing": [""]}
{"scheme": {"subjects": ["Philosophy", "Phenomenology", "Theology", "History", "Biography", "Literary Criticism", "Fiction", "Science Fiction", "Fantasy"], "aliases": {"Philosophie": "Philosophy", "SF": "Science Fiction", "Sci-Fi": "Science Fiction", "Church History": "History", "Lit Crit": "Literary Criticism"}, "drop": ["General", "Humanities", "Non-Fiction", "Nonfiction", "ebook", "book", "[General]", "*Misc*"], "parents": {"Phenomenology": "Philosophy", "Literary Criticism": "History"}, "blocks_fiction": ["Biography", "Literary Criticism"], "fiction_genres": ["Fiction", "Science Fiction", "Fantasy"]}, "name": "needs-66", "kind": "needs", "existing": ["[General]"]}
+67
View File
@@ -0,0 +1,67 @@
{"kind": "canonical", "name": "canonical-0", "subject": "Philosophy"}
{"kind": "canonical", "name": "canonical-1", "subject": "Philosophy"}
{"kind": "canonical", "name": "canonical-2", "subject": "Philosophy"}
{"kind": "canonical", "name": "canonical-3", "subject": "Philosophy"}
{"kind": "canonical", "name": "canonical-4", "subject": "Philosophy"}
{"kind": "canonical", "name": "canonical-5", "subject": "Science Fiction"}
{"kind": "canonical", "name": "canonical-6", "subject": "Science Fiction"}
{"kind": "canonical", "name": "canonical-7", "subject": "Science Fiction"}
{"kind": "canonical", "name": "canonical-8", "subject": null}
{"kind": "canonical", "name": "canonical-9", "subject": null}
{"kind": "canonical", "name": "canonical-10", "subject": null}
{"kind": "canonical", "name": "canonical-11", "subject": null}
{"kind": "canonical", "name": "canonical-12", "subject": null}
{"kind": "canonical", "name": "canonical-13", "subject": null}
{"kind": "canonical", "name": "canonical-14", "subject": null}
{"kind": "canonical", "name": "canonical-15", "subject": null}
{"kind": "canonical", "name": "canonical-16", "subject": null}
{"kind": "canonical", "name": "canonical-17", "subject": "History"}
{"kind": "canonical", "name": "canonical-18", "subject": "Literary Criticism"}
{"kind": "canonical", "name": "canonical-19", "subject": null}
{"kind": "canonical", "name": "canonical-20", "subject": null}
{"kind": "canonical", "name": "canonical-21", "subject": null}
{"kind": "canonical", "name": "canonical-22", "subject": null}
{"kind": "canonical", "name": "canonical-23", "subject": null}
{"kind": "canonical", "name": "canonical-24", "subject": "Fiction"}
{"kind": "parents", "name": "parents-25", "subjects": ["Philosophy", "Phenomenology"]}
{"kind": "parents", "name": "parents-26", "subjects": ["Philosophy"]}
{"kind": "parents", "name": "parents-27", "subjects": ["Philosophy", "History"]}
{"kind": "parents", "name": "parents-28", "subjects": []}
{"kind": "parents", "name": "parents-29", "subjects": ["History", "Literary Criticism"]}
{"kind": "parents", "name": "parents-30", "subjects": ["Philosophy", "Phenomenology", "History", "Literary Criticism"]}
{"kind": "parents", "name": "parents-31", "subjects": []}
{"kind": "parents", "name": "parents-32", "subjects": ["Fiction", "Science Fiction"]}
{"kind": "parents", "name": "parents-33", "subjects": ["Philosophy"]}
{"kind": "parents", "name": "parents-34", "subjects": ["Philosophy", "Phenomenology", "Fantasy"]}
{"kind": "fiction", "name": "fiction-35", "subjects": ["Biography"]}
{"kind": "fiction", "name": "fiction-36", "subjects": ["History", "Fiction"]}
{"kind": "fiction", "name": "fiction-37", "subjects": ["History", "Fiction"]}
{"kind": "fiction", "name": "fiction-38", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-39", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-40", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-41", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-42", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-43", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-44", "subjects": ["History"]}
{"kind": "fiction", "name": "fiction-45", "subjects": ["Biography"]}
{"kind": "fiction", "name": "fiction-46", "subjects": ["Literary Criticism"]}
{"kind": "fiction", "name": "fiction-47", "subjects": ["Fiction"]}
{"kind": "fiction", "name": "fiction-48", "subjects": []}
{"kind": "fiction", "name": "fiction-49", "subjects": []}
{"kind": "fiction", "name": "fiction-50", "subjects": []}
{"kind": "fiction", "name": "fiction-51", "subjects": ["Fiction"]}
{"kind": "compose", "name": "compose-52", "subjects": ["Philosophy", "Phenomenology"]}
{"kind": "compose", "name": "compose-53", "subjects": ["Philosophy", "Phenomenology", "Fiction"]}
{"kind": "compose", "name": "compose-54", "subjects": ["History", "Literary Criticism"]}
{"kind": "compose", "name": "compose-55", "subjects": []}
{"kind": "compose", "name": "compose-56", "subjects": []}
{"kind": "needs", "name": "needs-57", "needs": true}
{"kind": "needs", "name": "needs-58", "needs": true}
{"kind": "needs", "name": "needs-59", "needs": true}
{"kind": "needs", "name": "needs-60", "needs": false}
{"kind": "needs", "name": "needs-61", "needs": false}
{"kind": "needs", "name": "needs-62", "needs": true}
{"kind": "needs", "name": "needs-63", "needs": false}
{"kind": "needs", "name": "needs-64", "needs": false}
{"kind": "needs", "name": "needs-65", "needs": true}
{"kind": "needs", "name": "needs-66", "needs": true}
+103
View File
@@ -0,0 +1,103 @@
"""Apply a subject scheme the way the book pipeline did, for comparison.
The four functions below are the originals, copied out of the subjects module
verbatim and with the module-level scheme lifted into an argument — importing
it opens a database connection and loads a chat client, and neither decides
anything. What decides is the arithmetic of the scheme, which is what this
compares.
python3 oracle/subjects.py < cases.ndjson
One case per line, carrying its own scheme. Writes one JSON answer per line.
"""
from __future__ import annotations
import json
import re
import sys
_STUDY_TITLE_RE = re.compile(
r"\b(companion to|guidebook to|very short introduction|"
r"letters of|collected letters|memoirs?\b|autobiograph|"
r"\bdiary\b|\bessays\b|\blectures\b|\bspeeches\b|"
r"a life of|biography of)\b",
re.IGNORECASE,
)
def canonical_tag(name, scheme):
subject_lower = {s.lower(): s for s in scheme["subjects"]}
alias_lower = {k.lower(): v for k, v in scheme["aliases"].items()}
drop_lower = {d.lower().strip("*[]") for d in scheme["drop"]}
t = (name or "").strip()
if not t:
return None
low = t.lower()
if low in drop_lower or low.strip("*[]") in drop_lower:
return None
if low in subject_lower:
return subject_lower[low]
if low in alias_lower:
return alias_lower[low]
return None
def expand_parents(subjects, scheme):
subject_set = frozenset(scheme["subjects"])
chosen = set()
for s in subjects:
if s not in subject_set:
continue
chosen.add(s)
parent = scheme["parents"].get(s)
if parent:
chosen.add(parent)
return [s for s in scheme["subjects"] if s in chosen]
def sanitize_subjects(subjects, scheme, title=None):
blocks = frozenset(scheme["blocks_fiction"])
genres = frozenset(scheme["fiction_genres"])
chosen = set(subjects)
study = bool(title and _STUDY_TITLE_RE.search(title))
if chosen & blocks or study:
chosen -= genres
return [s for s in scheme["subjects"] if s in chosen]
def compose_tags(subjects, scheme, title=None):
return sanitize_subjects(expand_parents(subjects, scheme), scheme, title=title)
def needs_classify(existing, scheme):
subject_set = frozenset(scheme["subjects"])
for raw in existing:
c = canonical_tag(raw, scheme)
if c and c in subject_set:
return False
return True
def answer(case):
scheme, kind = case["scheme"], case["kind"]
if kind == "canonical":
return {"subject": canonical_tag(case["tag"], scheme)}
if kind == "parents":
return {"subjects": expand_parents(case["subjects"], scheme)}
if kind == "fiction":
return {"subjects": sanitize_subjects(case["subjects"], scheme, title=case.get("title"))}
if kind == "compose":
return {"subjects": compose_tags(case["subjects"], scheme, title=case.get("title"))}
if kind == "needs":
return {"needs": needs_classify(case["existing"], scheme)}
raise SystemExit(f"no such case: {kind}")
for line in sys.stdin:
if not line.strip():
continue
case = json.loads(line)
out = {"name": case["name"], "kind": case["kind"]}
out.update(answer(case))
sys.stdout.write(json.dumps(out, sort_keys=True) + "\n")
+14 -1
View File
@@ -19,7 +19,7 @@ type Written = Result<Vec<String>, String>;
type Job = (&'static str, fn() -> Written);
fn main() -> ExitCode {
let jobs: [Job; 18] = [
let jobs: [Job; 19] = [
("tokens", tokens),
("unescape", unescape),
("chunkmd", chunkmd),
@@ -38,6 +38,7 @@ fn main() -> ExitCode {
("avplan", avplan),
("pdfgutter", pdfgutter),
("seriesof", seriesof),
("subjects", subjects),
];
for (name, job) in jobs {
@@ -220,6 +221,18 @@ fn cueseg() -> Written {
Ok(written)
}
fn subjects() -> Written {
let dir = parity::golden("subjects");
std::fs::create_dir_all(&dir).map_err(|e| e.to_string())?;
let cases = parity::dir().join("cases/subjects/cases.ndjson");
let text = std::fs::read_to_string(&cases).map_err(|e| e.to_string())?;
let answers = parity::run_oracle("subjects.py", &text)?;
let path = dir.join("cases.ndjson");
std::fs::write(&path, answers).map_err(|e| e.to_string())?;
Ok(vec![path.display().to_string()])
}
fn seriesof() -> Written {
let dir = parity::golden("seriesof");
std::fs::create_dir_all(&dir).map_err(|e| e.to_string())?;
+123
View File
@@ -0,0 +1,123 @@
//! Every judgement a subject scheme makes must match the Python exactly.
//!
//! A scheme decides what a shelf can be browsed by. A heading mapped onto the
//! wrong subject files a book where nobody will look for it, and a fiction
//! genre left on a biography puts a life of somebody in among the novels.
use bibclean::scheme::Scheme;
use serde_json::Value;
fn records(text: &str) -> Vec<Value> {
text.lines()
.filter(|line| !line.trim().is_empty())
.map(|line| serde_json::from_str(line).expect("valid JSON"))
.collect()
}
fn cases() -> Vec<Value> {
let text = std::fs::read_to_string(parity::dir().join("cases/subjects/cases.ndjson"))
.expect("a readable case file");
records(&text)
}
fn strings(value: &Value) -> Vec<String> {
value
.as_array()
.expect("an array")
.iter()
.map(|item| item.as_str().expect("a string").to_string())
.collect()
}
#[test]
fn every_judgement_matches_python() {
let golden = records(&parity::read_golden_text("subjects/cases.ndjson"));
let cases = cases();
assert_eq!(cases.len(), golden.len(), "case count moved — regenerate");
let mut wrong: Vec<String> = Vec::new();
for (case, theirs) in cases.iter().zip(&golden) {
let name = case["name"].as_str().expect("a name");
let kind = case["kind"].as_str().expect("a kind");
assert_eq!(theirs["name"].as_str(), Some(name), "cases out of order");
// The scheme travels with the case, because a scheme is exactly the
// thing that is not compiled in.
let scheme: Scheme =
serde_json::from_value(case["scheme"].clone()).expect("a readable scheme");
let title = case["title"].as_str();
let mut note = |field: &str, ours: String, theirs: &Value| {
wrong.push(format!("{name}.{field}: python {theirs}, rust {ours}"));
};
match kind {
"canonical" => {
let ours = scheme.canonical(case["tag"].as_str().expect("a tag"));
if ours != theirs["subject"].as_str() {
note("subject", format!("{ours:?}"), &theirs["subject"]);
}
}
"parents" => {
let ours = scheme.with_parents(&strings(&case["subjects"]));
if ours != strings(&theirs["subjects"]) {
note("subjects", format!("{ours:?}"), &theirs["subjects"]);
}
}
"fiction" => {
let ours = scheme.without_impossible_fiction(&strings(&case["subjects"]), title);
if ours != strings(&theirs["subjects"]) {
note("subjects", format!("{ours:?}"), &theirs["subjects"]);
}
}
"compose" => {
let ours = scheme.compose(&strings(&case["subjects"]), title);
if ours != strings(&theirs["subjects"]) {
note("subjects", format!("{ours:?}"), &theirs["subjects"]);
}
}
"needs" => {
let ours = scheme.needs_subject(&strings(&case["existing"]));
if Some(ours) != theirs["needs"].as_bool() {
note("needs", ours.to_string(), &theirs["needs"]);
}
}
other => panic!("nothing answers a {other} case"),
}
}
assert!(
wrong.is_empty(),
"{} judgements differ:\n{}",
wrong.len(),
wrong
.iter()
.take(20)
.map(|line| line.chars().take(200).collect::<String>())
.collect::<Vec<_>>()
.join("\n")
);
}
/// Every question has to be asked, or the file proves less than it looks like
/// it does.
#[test]
fn every_kind_of_case_is_present() {
let cases = cases();
for kind in ["canonical", "parents", "fiction", "compose", "needs"] {
assert!(
cases.iter().any(|case| case["kind"] == kind),
"no {kind} case"
);
}
}
/// Catches a golden file drifting away from a Python that has moved on.
#[test]
#[cfg(feature = "python")]
fn the_golden_file_still_matches_live_python() {
let cases = std::fs::read_to_string(parity::dir().join("cases/subjects/cases.ndjson"))
.expect("a readable case file");
let live = parity::run_oracle("subjects.py", &cases).expect("the oracle runs");
assert_eq!(live, parity::read_golden_text("subjects/cases.ndjson"));
}