A Long Overdue Post

So many things get lost to the edges. Too many commitments, too little motivation, etc. etc.

For many a moon I’ve been meaning to write up how Alex and I turned my QueerLCSH into a libGuide. I’m finally doing it!


The very first thing, of course, was the QueerLCSH itself which you can read ALL about over at that link. (Scroll past the updates for the original post and a link to the headings themselves)

Then I was alerted by Jessica Colbert that she had made a very cool LibGuide at her institution using my headings! Clicking any of the headings brings the user directly into the library catalog, performing a subject search.

Naturally I thought, “hey, why not do that here too?”

I talked to Alex about the idea and they were totally on board and excited. The question was how to turn a looooooong list of headings into a LibGuide without it being totally tedious?

As it usually is (to me), the answer was XSLT. Remember that I made my QueerLCSH by painstakingly (and tediously) downloading records 1-by-1 from id.loc.gov as RDF/XML (MADS and SKOS). That means that I still have all the raw material to work with and transform however I want.

Alex pointed out that even if I could generate the links easily, we’d have to load those links into the LibGuide one at a time, thereby returning us to tedium land. I reached out to Springshare Support, and learned that if you upload a set of links as a database, they can then flip them to be link assets. I don’t know why that power isn’t given to users of LibGuide software, but I was glad they were willing to do it for us.

At this point we were ready for me to generate the links. I wrote the following XSLT transformation:

<?xml version=”1.0″ encoding=”UTF-8″?>
<xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform&#8221;
    xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221;        xmlns:ng=http://www.netanelganin.com&#8221;
    exclude-result-prefixes=“xs” version=“2.0”>

    <xsl:function name=“ng:norm” as=“xs:string”>
<xsl:param name=“arg” as=“xs:string”/>
<xsl:sequence select=“normalize-space(lower-case(translate($arg, ‘-.,’, ‘   ‘)))”/>

    <xsl:template match=“/rdf:RDF”>
            select=“madsrdf:Topic/madsrdf:authoritativeLabel | madsrdf:ComplexSubject/madsrdf:authoritativeLabel”>
<xsl:sort select=“ng:norm(.)”/>

    <xsl:template match=“madsrdf:authoritativeLabel”>





It’s pretty straight forward — there’s a function which I use to normalize the headings, it turns commas, periods and dashes into spaces. Then all the headings get sorted, and tossed into a big list. I’ve highlighted the most important part in bold. This is what’s called a ‘deep link’. I learned while doing this that you can’t just perform a subject search in Alma and then create a link based on that. It’ll decay eventually. You need to build a subject search using this deep link thing. Here’s some Ex Libris documentation on deep links.

As you can see there’s an “ng:norm(.)” buried in the middle of the deep link, that’s where the heading slides in. This particular link is a subject search, but it could easily be a browse search.

So this stylesheet processed all the headings and turned them into links which bring a user directly into our catalog. We tossed ’em all into an Excel spreadsheet, uploaded it to the LibGuide software, and then Springshare turned them into link assets!

Pretty cool, right?

Feel free to snag this XSLT and do the same for your institution, or if you’re interested in having something similar but aren’t sure how — let me know and I’ll try to help you out!

Some interesting things to consider:

  • We made no attempt to guarantee that any of the subject searches would actually return results. While that does mean patrons are presented with topics we don’t actually have any resources for, we couldn’t think of how to maintain the upkeep as new books entered our catalog. How would we know if new material matched a topic which we had previously removed?
  • We didn’t add any of the subject headings which were only added toLCSH for validation purposes, e.g. “African American gays–Fiction”, “Gay couples–Legal status, laws, etc” (in truth I’ve never really understood why they do that…)
  • We didn’t add any subdivisions unless the LGBT aspect was in that subdivision, i.e. “World War, 1939-1945–Participation, Gay” but not “Bisexuality — Religious aspects”. We felt that performing the subject search of the main topical term itself without the subdivisions would probably be sufficient.
  • If you do decide to include subdivisions, consider the pattern headings, ex. “Gay rights–Religious aspects–Baptists, [Catholic Church, etc.]” searching that subject string as is would be unfruitful because that isn’t how pattern headings look in the wild.
  • We opted not to include any of the Library of Congress Genre/Form Terms or Library of Congress Demographic Group Terms because in our ILS it is not possible for users to actually target a search to those fields. If it becomes possible, we’ll add ’em in!
  • Scope notes: keep ’em or not?



After the initial transformations were done, I stepped back from the project and Alex now maintains the LibGuide. They check the New LCSH each month and add any new relevant terms themselves.


The Future of Access Points

Authorized access point — Here’s where we REALLY get to the fun stuff! You’ll note that in current RDA/MARC authority records there is no separation between the preferred title and the authorized access point.

I said this in an earlier post — and I thought it was worth expanding on. This is that expansion.


As I continue to RIMMF my way along through comicbook-land, and as I continue to create name authority records in the Hebraica NACO funnel, I am also continuing to make access points.

Authorized access points (AAP) and variant access points (VAP) serve important roles in our bibliographic retrieval systems, so we should talk about them.

What are we even doing again?

It’s crucial that we (as catalogers and also the people who design our systems) think about what the heck we’re doing, and why we’re doing it. Why do we have AAPs?

A brief answer:

We have AAPs so that we can uniquely identify Agents (people/families/corporate bodies) Resources (works/expressions/manifestations/items) and Subjects. Furthermore we have them to serve as human-readable (and understandable) names for those same Agents, Resources, and Subjects.

Notice that that’s two entirely unrelated things that our current AAPs are supposed to be doing. Uniqueness, and human understandability are different!

Of course, it’s because card catalog.

(I’m trying to turn that into a stock phrase to represent why we do so much of what we do)

The Library of Congress has always recognized that we’re attempting to serve two masters and that using the strings as the unique identifier wasn’t ideal. That’s why every name authority record (NAR) has a unique ID in the 010 field in addition to the string found in the 1XX field.

So how will we decouple these in the future?

The AAP of Tomorrow

Some of this is based on what I heard Gordon Dunshire say at the RIMMF-a-Thon at ALA Annual. Some it is my own pie-in-the-sky guessing.

  1. The AAP of tomorrow will not be carried in the same field as Preferred name of the person, or Preferred title of the work. These are separate elements from the AAP and will be treated as such.
  2. While current instructions for RDA do provide guidance (some tighter than others) on creation of AAPs, it won’t always do that. It will provide guidance on the construction of each potential piece of an AAP, the preferred name/title, significant dates, form/content types, etc. But the construction of the AAP itself will be left to the application profile of your local system.

Let me say #2 again in more/different words because it is so crucial.

RDA (or whatever content standard we’ll be using) will help you identify and record elements in authority records

  • Names
  • Dates
  • Forms
  • Everything

But the unique identifier that you will not have to look at or even care about will be system generated. Since it will be unique, the AAPs will not have to be, and we will use our best judgement (helped along by well-vetted research as to what patrons find useful) to make the authorized access point for display.

Whatever link is generated for patrons to click to collate all the resources associated with that person, it will be based on that unchanging unique identifier, whether the text they click on says

  • Jackson, Michael, 1958-2009
  • Michael Jackson (Singer)
  • Michael Jackson, and there’s a picture of him next to the name

Should be left to what patrons find useful. The requirement “add X element to the AAP if necessary to distinguish” will be irrelevant because no element will be necessary to distinguish – -the unique identifier will do that.

What we’re going to do as future catalogers will be to record as much data as we can about agents and resource and provide identifiers for those agents/resources from other systems if they exist.


The Implication

I can see that some of you have already realized the implications. But I’m going to spell it out anyway.

Variant access points won’t exist.

Okay okay, maybe that’s taking it too far. But return to the questions above — why do we have VAPs? What purpose are they intended to serve?

VAPs provide alternative entry into the catalog for when an agent or resource is known by another name.

Well again, as above — RDA (or whichever content standard) will provide guidance on how to identify and record variant names and titles.

That’s it. That’s all you have to do!

Because there no longer will be the notion of a single authorized access point, thou shalt not have any other access points before me — there aren’t tiers of them either.

Systems (either local or shared) will generate access points for display and can generate hundreds or thousands hidden access points which can be matched on in case a patron searches differently than you expect. They are all equal to one another — and none have to be created individually by you, the cataloger.


Pretty cool, right?

Stop it with Yer Dang “Hebrew Fiction”

Oh there’s Netanel, off on another of his patented rants about Hebrew fiction and how much he hates it.



My beef is with

650 _ 0 Hebrew fiction.

and its very good friend:

650 _ 0 Israeli fiction.

If I had a Spanish-language specialty, I’d probably be complaining about Spanish fiction, but my specialty is Hebrew, so here we are.

Now look, you know and I know (and I know that you know) that subjects belong in 650s and genre/forms belong in 655s, we’re not going to rehash that whole biz here.

You, right now.


So then why am I even bringing this up? Well here’s the thing, I feel you. There currently aren’t any LCGFT terms which adequately cover “language of fiction” or “national origin of fiction” — heck I’ll even give you the benefit of the doubt that you’re trying to enter

655 _ 7 Hebrew fiction $2 lcsh

and maybe OCLC is just flipping it to a 650 upon controlling the heading. Because the thing is people do want access to their fiction by these facets, so I understand your impetus to give them that access.

What I’m suggesting is that we’re going about this the wrong way. If we push for authorizing every “$language fiction” and “$nation fiction” as LCGFT terms, we’re going to end up with the same bloat we currently suffer from in LCSH.

Let’s leverage the metadata we already have to give users these facets. The “Lang” element (characters 35-57 in the 008 field) contains a three digit code which can be dereferenced into a language. The “Ctry” element (characters 15-17 in an 008) contains a code which can be dereferenced into country of publication.

Write a macro that upon presence of a ‘1’ or ‘f’ in “LitF” (character 33 in an 008 or 16 in an  006) generates a 655 of “X fiction” upon export. We can treat them as we do pattern headings and any [Language] fiction is allowed, without needing to add every term individually.

Whadda ya think?



As the very wise and detail-oriented MarcinaColdClimate has pointed out to me:

I have erred!

“Ctry” is place of publication of this manifestation — if for example (her example to be precise), you were cataloging a Canadian publication of Tintin, you’d end up with

655 _ 7 Canadian fiction.

When of course Tintin is Belgian.



Linked data.

Pretty good idea, right?

No, but seriously — in the work Name Authority Record — place of origin of work (RDA 6.5) is recorded in 370  $g. Our more-clever and powerful cataloging tools will be able to easily fetch that data for us. Problem solved.



Emflix – Part 20 – Hybrid Consistency

Note: this is originally an excerpt from Part 12 – Action and Adventure, but I figured it ought to be cross posted into the ‘Rules’ section of my index.

I noticed that Netflix had many “hybrid subgenres” e.g. Action Sci-Fi and Fantasy, Indie Romance, Sci-Fi Thrillers, etc. The odd thing to me is that only some of these hybrid subgenres would appear under both of their ‘parent’ genres.

That is, in Netflix’s listings ‘Action Thrillers’ is listed under both ‘Action & Adventure’ and ‘Thrillers’, whereas ‘Action Comedies’ is listed only under ‘Action & Adventure’ and not under Comedies. Weird, right?

That kind of inconsistency is this cataloger’s bane. So my first rule was, if a subgenre is ‘hybrid’ (as judged by its name being made up of two different genres) it belongs under both genres.

Emflix – Part 19 – Subgenres – Drama

Link to Part 18 – Subgenres – Documentary

Here’s “Drama”

Compare again Netflix’s listing of genres to mine.

I struggled with a problem with the category.

Some of the subgenres really are not limited to Drama and yet only appeared under Drama in the hierarchy.

Consider ‘Period Pieces’

While most period pieces tend to be dramas, sure — what about all those Jane Austen/Oscar Wilde adaptations? Hilarious period pieces (your mileage may vary on the hilarity) What about Topsy Turvy, Clue, or half of Mel Brook’s movies? Comedic period pieces! Perhaps I should’ve added ‘Comedy Period Piece’ to my hierarchy, but I didn’t.

Here are my subgenres for said category with asterisks for ones I’ll be discussing below, either because they’re not on Netflix’s list, or they were changed from Netflix’s for some reason

  • African-American Dramas
  • Asian-American Dramas*
  • Classic Dramas
  • Courtroom Dramas
  • Crime Dramas
  • Dramas Based on Real Life
    • Biographies*
  • Dramas Based on the Book
    • Dramas Based on Bestsellers
    • Dramas Based on Classic Literature
    • Dramas Based on Contemporary Literature
  • Epics*
  • Family Dramas
  • Foreign Dramas
  • Gambling Dramas
  • Indie Dramas*
  • LGBTQ Dramas*
  • Latino/a Dramas*
  • Medical Dramas
  • Military and War Dramas
  • Period Pieces
    • 20th Century Period Pieces
    • Pre-20th Century Period Pieces
  • Political Dramas
  • Religious and Spiritual Dramas*
  • Romantic Dramas
  • Sci-Fi Dramas
  • Showbiz Dramas
  • Social Issue Dramas
  • Sports Dramas
  • Tearjerkers
  • Teen Dramas*


  • Asian-American Dramas
    • Netflix doesn’t have this category despite many films potentially being able to fulfill it, so I added it
  • Biographies
    • Netflix places ‘Biographies’ as it’s own subgenre under Drama, whereas I placed it as a sub-Subgenre of ‘Dramas Based on Real Life’. While I am aware of the existence of fictional biographies (consider the Chuck Barris biopic, ‘Confessions of a Dangerous Mind’) because the vast majority of such films would fulfill ‘Dramas based on Real Life’ I decided to have that category absorb ‘Biographies’
  • Epics
  • Indie Drama
  • LGBTQ Dramas
    • Changed for inclusionary reasons, see my full write-up on the LGBTQ genre, when I get there
  • Latino/a Dramas
    • See the People-Genre rule
  • Religious and Spiritual Dramas
    • Added for hybrid consistency
  • Teen Dramas
    • Added for hybrid consistency


Link to Part 21 – Subgenres – Faith and Spirituality

Baby’s First Macro

Who doesn’t wish OCLC would work a little differently than it does? A little extra feature here, a little extra feature there…if you’ve worked with it for any amount of time, you’ve probably gotten a little frustrated at times.

This was what I wanted on March 10th — so I decided to knuckle down, look up how to make an OCLC macro, and I done did it! I’m sure it could be done better, that it could be done faster or more efficiently, but it totally works — and for me, that’s enough for now.

I first grabbed the contents of the Cont fixed field and Indx fixed field and stored them in string variables.

The macro then checks three cases:

  1. If the Cont field contains a ‘b’ and Indx is ‘1’ then it adds a 504 field with the value “Includes bibliographical references and index”
  2. If the Cont field contains a ‘b’ and Indx is ‘0’ or uncoded then it adds a 504 field with the value “Includes bibliographical references”
  3. If the Cont field does not contain a ‘b’ and Indx is 1, then it adds a 500 field with the value “Includes index.

So here it is copied below, feel free to use it, re-use it, or improve it (but if you do, lemme know!).

Sub Main
    Dim CS As Object
Set CS = CreateObject("Connex.Client")
CS.GetFixedField "Cont", ContCode$
CS.GetFixedField "Indx", IndxCode$

If InStr(ContCode$, "b") and IndxCode$ = "1" Then
CS.AddField 1, "504  Includes bibliographical references and index."
End If

If InStr(ContCode$, "b") and (IndxCode$ = "" or IndxCode$ = "0") Then
CS.AddField 1, "504  Includes bibliographical references."
End If

If InStr(ContCode$, "b")=0 and IndxCode$ = "1" Then
CS.AddField 1, "500  Includes index."
End If
End Sub

Emflix – Part 18 – Subgenres – Documentary

Link to Part 17 – Subgenres – Comedy

Here’s “Documentary”

Compare again Netflix’s listing of genres to mine.


Here are my subgenres for said category with asterisks for ones I’ll be discussing below

  • African-American Documentaries
  • Biographical Documentaries
  • Crime Documentaries
  • Faith and Spirituality Documentaries
  • Foreign Documentaries
  • Historical Documentaries
  • Indie Documentaries
  • Military Documentaries
  • Mockumentaries
  • Musical Documentaries*
  • Political Documentaries
  • Science and Nature Documentaries
  • Social and Cultural Documentaries
  • Sports Documentaries


  • Musical Documentaries
    • On the Netflix listing, this is called ‘Rockumentaries’. I changed it to ‘Musical Documentaries’ because there were a bunch of films under this subGenre which aren’t documenting rock music but rather, jazz, hip-hop, etc. I figured ‘Musical Documentaries’ would cover all those bases.


Not present on my list, but present on Netflix’s

  • The three subSubGenres of Faith and Spirituality Documentaries
    • Inspirational Biographies
    • Religion and Mythology Documentaries
    • Spiritual Mysteries
  • HBO Documentaries
  • Miscellaneous Documentaries
  • PBS Documentaries
  • Travel and Adventure Documentaries


  • Inspirational Biographies, Religion and Mythology Documentaries, Spiritual Mysteries, Travel and Adventure Documentaries
  • HBO Documentaries, PBS Documentaries
    • As per Disney/Nickelodeon in ‘Children and Family‘ I didn’t consider the television network to be a genre, that’s descriptive metadata, not genre/form
  • Miscellaneous Documentaries
    • I just didn’t like this category. It’s useless, it says, “well it’s a documentary, but doesn’t fit into any other category”. Frankly, any time I encountered it in the Netflix database, I found the film was a decent enough fit with one of the existing categories as to render this catch-all moot.


Link to Part 19 – Subgenres – Drama

Emflix – Part 17 – Subgenres – Comedy

Link to Part 16 – Subgenres – Classics

Here’s “Comedy”

Compare again Netflix’s listing of genres to mine.


Here are my subgenres for said category with asterisks for ones I’ll be discussing below

  • Action Comedies*
  • African-American Comedies
  • Asian-American Comedies
  • Classic Comedies*
  • Cult Comedies
  • Dark Humor and Black Comedies
  • Family Comedies*
  • Foreign Comedies
  • Indie Comedies*
  • LGBTQ Comedies*
  • Late Night Comedies
  • Mockumentaries
  • Political Comedies
  • Romantic Comedies
  • Screwball
  • Showbiz Comedies
  • Slapstick
  • Spoofs and Satire
  • Sports Comedies
  • Teen Comedies*



Not present on my list, but present on Netflix’s

  • Best of British Humor
  • Latino Comedies
  • Saturday Night Live
  • Stand-Up


  • Best of British Humor
    • This is one of the oddest Netflix categories. It’s a mix of tv/movies and I guess curated? I don’t have the skills to perform an exhaustive analysis if it’s actually everything Netflix has that is both ‘British’ and ‘Comedy’ — but even if it were, it seemed odd to me to single out a single country of production when they also have ‘Foreign Comedies’.
  • Latino Comedies
  • Saturday Night Live
    • If you’ve noticed a theme…Netflix isn’t great at separating out TV and Movies. In their defense, this category isn’t entirely collections of the tv series, it’s also any movie based on or or somehow otherwise produced by the SNL machine. For those reasons, I kept it, but then Rule of 5 eliminated it anyway.
  • Stand-Up
    • Rule of 5 eliminated it.


Bonus weirdness — why do Mockumentaries and Showbiz Comedies not file correctly (alphabetically) on Netflix?

Link to Part 18 – Subgenres – Documentary

Emflix – Part 16 – Subgenres – Classics

Link to Part 15 – Subgenres – Children and Family

Onto Classics!

Compare again Netflix’s listing of genres to mine.

Overall…’Classics’ was a tough one for me. While genre analysis is an inherently subjective task, and there’s room for disagreement in any category, ‘Classics’ are even more so because its not describing a film’s content (like Action films may contain high-octane explosions or car chases, or fight sequences), or mood (like a Thriller may evoke tension and danger to characters) — rather it’s a film’s reception. A film is a ‘Classic’ if a buncha people get together and say, “oh yeah that one’s a classic’.

I guess — I imagine a person on a desert island. You give her a complex compendium of all film genre tropes, styles, and identifiable characteristics. She could watch movies all day and then assign them genres based on these definitions. But unless she had other people around, she could never really say a film was a ‘Classic.’

But on the other hand — in actual practice, I found that the vast vast majorities of films placed into the ‘Classic’ genre by Netflix were really just “old exemplars”. Here’s how to be a Horror Classic — be a Horror film from a long time ago. So is the ‘Classic’ genre really just functioning as a limiting the films by year? Maybe…


Here are my subgenres for said category with asterisks for ones I’ll be discussing below

  • Action Classics*
  • Classic Comedies
  • Classic Dramas
  • Classic Epics*
  • Classic Movie Musicals*
  • Classic Sci-Fi and Fantasy
  • Classic Thrillers
  • Classic War Stories
  • Classic Westerns
  • Family Classics*
  • Film Noir
  • Foreign Classics
    • Foreign Classic Comedies
    • Foreign Classic Dramas
    • Foreign Silent Films
  • Horror Classics*
  • Indie Classics*
  • Romance Classics*
  • Silent Films




  • Action Classics, Classic Movie Musicals, Family Classics, Horror Classics, Indie Classics, and Romance Classics
    • Added for hybrid consistency — I was really surprised by how many terms are in the Netflix hierarchy that should be cross listed, but weren’t. Well I wouldn’t be doing that. The only exception was the subgenre, ‘Sci-Fi Cult Classics’ because I determined that that was just their term for ‘cult films’ — there was no distinction being made between a ‘regular cult film’ and a ‘classic cult film’, so I reflected that in my mapping.
  • Classic Epics
    • This was the only one requiring substantive thought from me. You’ll notice that while Netflix has ‘Epics’ as a subgenre under ‘Classics’, I have ‘Epics’ as a subgenre of ‘Drama’ and ‘Classic Epics’ as a subgenre of ‘Classics’. The problem was that not every epic is a classic epic! Their genrification has nowhere to place these non-classic epics. While I give you that epics were more popular back in the day, and Cecil B. DeMille isn’t making movies anymore — Lord of the Rings is definitely an epic, but I’ve not seen it on any Classics lists.

Link to Part 17 – Subgenres – Comedy

Emflix – Part 15 – Subgenres – Children and Family

Link to Part 14 – Subgenres – Anime and Animation

Here’s “Children and Family”

Compare again Netflix’s listing of genres to mine.


Here are my subgenres for said category with asterisks for ones I’ll be discussing below

  • Animal Tales
  • Book Characters
  • Disney*
  • Family Adventures
  • Family Animation
  • Family Classics
  • Family Comedies
  • Family Dramas
  • Family Sci-Fi and Fantasy
  • Teen Comedies
  • Teen Dramas


  • Disney
    • I waffled on this one. I didn’t like the idea of recording something which is so clearly descriptive metadata and not subject metadata. This is a production company! But I ended up conceding because of how much people consider ‘Disney’ its own thing.


Not present on my list, but present on Netflix’s

  • Ages 0-2
  • Ages 2-4
  • Ages 5-7
  • Ages 8-10
  • Ages 11-12
  • Cartoons
  • Coming of Age
  • Dinosaurs
  • Education & Guidance
  • Kids’ Music
  • Kids’ TV
  • Nickelodeon
  • Teen Romance


  • Age groupings
    • Frankly our collection isn’t exactly intended for children so I didn’t feel a need to differentiate between the age groupings at that micro-level.
  • Cartoons
    • I was unable to satisfactorily separate this category from “Family Animation” and so decided to eliminate it entirely as they almost entirely overlapped.
  • Coming of Age
  • Dinosaurs
    • Never came up in our collection
  • Education and Guidance
    • Never came up in our collection
  • Kids’ Music
    • Never came up in our collection
  • Kids’ TV
    • As I said in the last post re: Anime Series — I was attempting to treat movies and TV shows separately with greater consistency than Netflix was
  • Nickelodeon
    • Never came up in our collection — but I may’ve dismissed it even if it had, I made an exception for Disney above, but probably wouldn’t’ve for Nickelodeon…sorry Nickelodeon.
  • Teen Romance
    • Rule of 5 eliminated it

Link to Part 16 – Subgenres – Classics