Skip to content

Commit 27089bb

Browse files
Merge pull request #108 from NatLibFi/EKIRJASTO-127-Update-bisac
Ekirjasto 127 update bisac
2 parents 747f68d + 1d0d376 commit 27089bb

3 files changed

Lines changed: 5553 additions & 4385 deletions

File tree

core/classifier/bisac.py

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ def __init__(self, result, *ruleset):
109109
# It's a special object. Add it to the ruleset as-is.
110110
self.ruleset.append(rule)
111111

112+
# Mostly for debugging purposes
113+
def __repr__(self):
114+
caught_str = ", ".join(str(item) for item in self.caught)
115+
return f"MatchingRule(ruleset={self.ruleset}, caught=[{caught_str}])"
116+
112117
def match(self, *subject):
113118
"""If `subject` matches this ruleset, return the appropriate
114119
result. Otherwise, return None.
@@ -346,7 +351,6 @@ class BISACClassifier(Classifier):
346351
m(Ghost_Stories, fiction, "Ghost"),
347352
m(Occult_Horror, fiction, "Occult & Supernatural"),
348353
m(Gothic_Horror, fiction, "Gothic"),
349-
m(Horror, fiction, "Horror"),
350354
# Romance
351355
# n.b. no BISAC for Gothic Romance
352356
m(Contemporary_Romance, fiction, "Romance", "Contemporary"),
@@ -386,18 +390,15 @@ class BISACClassifier(Classifier):
386390
m(Humorous_Fiction, fiction, "Humorous"),
387391
m(Humorous_Fiction, fiction, "Satire"),
388392
m(General_Fiction, fiction, "Literary"),
389-
m(LGBTQ_Fiction, fiction, "Gay"),
390-
m(LGBTQ_Fiction, fiction, "Lesbian"),
391-
m(LGBTQ_Fiction, fiction, "Gay & Lesbian"),
393+
m(LGBTQ_Fiction, fiction, "LGBTQ+"),
392394
m(Religious_Fiction, fiction, "Religious"),
393395
m(Religious_Fiction, fiction, "Jewish"),
394396
m(Religious_Fiction, fiction, "Visionary & Metaphysical"),
395-
m(Womens_Fiction, fiction, anything, "Contemporary Women"),
396397
m(Westerns, fiction, "Westerns"),
397398
# n.b. BISAC "Fiction / Urban" is distinct from "Fiction /
398399
# African-American / Urban", and does not map to any of our
399400
# genres.
400-
m(Urban_Fiction, fiction, "African American", "Urban"),
401+
m(Urban_Fiction, fiction, "African American & Black", "Urban & Street Lit"),
401402
# BISAC classifies these genres at the top level, which we
402403
# treat as 'nonfiction', but we classify them as fiction. It
403404
# doesn't matter because they're neither, really.
@@ -413,7 +414,7 @@ class BISACClassifier(Classifier):
413414
m(Architecture, nonfiction, "Architecture"),
414415
m(Art_Criticism_Theory, nonfiction, "Art", "Criticism & Theory"),
415416
m(Art_History, nonfiction, "Art", "History"),
416-
m(Fashion, nonfiction, "Design", "Fashion"),
417+
m(Fashion, nonfiction, "Design", "Fashion & Accessories"),
417418
m(Design, nonfiction, "Design"),
418419
m(Art_Design, nonfiction, "Art"),
419420
m(Photography, nonfiction, "Photography"),
@@ -458,7 +459,8 @@ class BISACClassifier(Classifier):
458459
m(Bartending_Cocktails, nonfiction, "Cooking", "Beverages"),
459460
m(Health_Diet, nonfiction, "Cooking", "Health & Healing"),
460461
m(Health_Diet, nonfiction, "Health & Fitness"),
461-
m(Vegetarian_Vegan, nonfiction, "Cooking", "Vegetarian & Vegan"),
462+
m(Vegetarian_Vegan, nonfiction, "Cooking", "Vegetarian"),
463+
m(Vegetarian_Vegan, nonfiction, "Cooking", "Vegan"),
462464
m(Cooking, nonfiction, "Cooking"),
463465
# History
464466
m(African_History, nonfiction, "History", "Africa"),
@@ -487,11 +489,10 @@ class BISACClassifier(Classifier):
487489
m(Antiques_Collectibles, nonfiction, "Antiques & Collectibles"),
488490
m(Crafts_Hobbies, nonfiction, "Crafts & Hobbies"),
489491
m(Gardening, nonfiction, "Gardening"),
490-
m(Games, nonfiction, "Games"),
491492
m(House_Home, nonfiction, "House & Home"),
492493
m(Pets, nonfiction, "Pets"),
493494
# Entertainment
494-
m(Film_TV, nonfiction, "Performing Arts", "Film & Video"),
495+
m(Film_TV, nonfiction, "Performing Arts", "Film"),
495496
m(Film_TV, nonfiction, "Performing Arts", "Television"),
496497
m(Music, nonfiction, "Music"),
497498
m(Performing_Arts, nonfiction, "Performing Arts"),
@@ -526,7 +527,7 @@ class BISACClassifier(Classifier):
526527
# Then handle the less complicated genres of nonfiction.
527528
# n.b. no BISAC for Periodicals.
528529
# n.b. no BISAC for Humorous Nonfiction per se.
529-
m(Music, nonfiction, "Biography & Autobiography", "Composers & Musicians"),
530+
m(Music, nonfiction, "Biography & Autobiography", "Music"),
530531
m(
531532
Entertainment,
532533
nonfiction,
@@ -551,22 +552,20 @@ class BISACClassifier(Classifier):
551552
m(Fantasy, fiction, "Fantasy & Magic"),
552553
m(Ghost_Stories, fiction, "Ghost Stories"),
553554
m(Fantasy, fiction, "Magical Realism"),
554-
m(Fantasy, fiction, "Mermaids"),
555+
m(Fantasy, fiction, "Mermaids & Mermen"),
555556
m(Fashion, nonfiction, "Fashion"),
556557
m(Folklore, fiction, "Fairy Tales & Folklore"),
557558
m(Folklore, fiction, "Legends, Myths, Fables"),
558559
m(Games, nonfiction, "Games & Activities"),
559560
m(Health_Diet, nonfiction, "Health & Daily Living"),
560-
m(Horror, fiction, "Horror & Ghost Stories"),
561+
m(Horror, fiction, "Horror"),
561562
m(Horror, fiction, "Monsters"),
562-
m(Horror, fiction, "Paranormal"),
563563
m(Horror, fiction, "Paranormal, Occult & Supernatural"),
564564
m(Horror, fiction, "Vampires"),
565565
m(Horror, fiction, "Werewolves & Shifters"),
566566
m(Horror, fiction, "Zombies"),
567567
m(Humorous_Fiction, fiction, "Humorous Stories"),
568568
m(Humorous_Nonfiction, "Young Adult Nonfiction", "Humor"),
569-
m(LGBTQ_Fiction, fiction, "LGBT"),
570569
m(Law, nonfiction, "Law & Crime"),
571570
m(Mystery, fiction, "Mysteries & Detective Stories"),
572571
m(Nature, nonfiction, "Animals"),
@@ -578,7 +577,6 @@ class BISACClassifier(Classifier):
578577
m(Reference_Study_Aids, nonfiction, "Language Arts"),
579578
m(Romance, fiction, "Love & Romance"),
580579
m(Science_Fiction, fiction, "Robots"),
581-
m(Science_Fiction, fiction, "Time Travel"),
582580
m(Social_Sciences, nonfiction, "Media Studies"),
583581
m(Suspense_Thriller, fiction, "Superheroes"),
584582
m(Suspense_Thriller, fiction, "Thrillers & Suspense"),
@@ -592,13 +590,12 @@ class BISACClassifier(Classifier):
592590
m(Science, nonfiction, "Science & Nature", "General"),
593591
# Any other subcategory of 'Science & Nature' goes under Nature
594592
m(Nature, nonfiction, "Science & Nature", something),
595-
# Life Strategies is juvenile/YA-specific, and contains both
596-
# fiction and nonfiction. It's called "Social Issues" for
597-
# juvenile fiction/nonfiction, and "Social Topics" for YA
598-
# nonfiction. "Social Themes" in YA fiction is _not_
599-
# classified as Life Strategies.
600-
m(Life_Strategies, fiction, "social issues"),
601-
m(Life_Strategies, nonfiction, "social issues"),
593+
# Life Strategies is juvenile/YA-specific.
594+
# In the new Bisac, "Social Issues" is "Social Themes" and covers
595+
# both Juvenile and YA fiction. This category was not classified
596+
# with the old Bisac so leaving it unclassified in the new one as
597+
# well for now.
598+
# For nonfiction, "Social Topics" covers both Juvenile and YA.
602599
m(Life_Strategies, nonfiction, social_topics),
603600
]
604601

0 commit comments

Comments
 (0)