On Giants and Dwarfs

This world wasn’t really designed for the very short or the very tall. Countertops, seat-to-floor ratios, clothing, beds, and a slew of other everyday encounters can be radically challenging for outliers on the height spectrum. I can’t really do anything about that beyond raising awareness, not my area.

Sorry, Very Tall Man
Sorry, Very Tall Man

But librarianship is my area, so let’s talk some LCSH.

I want to draw your attention to two words which (thanks, English) can be used to mean “tall/short person” or “mythological/legendary character”


Giants and Dwarfs

Both (in people) are more than simply observing someone’s height and noting that it’s outside the mean. Rather, they refer to specific conditions which have accompanying traits that a person may want to be aware of in terms of their body’s functions.

Though the word ‘giant’ isn’t used in common language for people (I browsed a bunch of the Tall Clubs International, affiliated sites and none of them use the term ‘giant’), ‘dwarf’ is. (See Dwarf Athletic Association of America

or per Peter Dinklage

I loved The Lord of the Rings as books and movies but, like elves, dwarves are presented as another creature. They are not humans in those stories. We don’t have elves walking around, but we do have dwarves like myself. We are real.


Unfortunately LCSH does not make this distinction:

Dwarfs clearly refers to people as it’s an NT of Short people, but it’s classification links (from the 053 field) are

GN69.3.-5      Anthropology—Physical anthropology. Somatology—Human variation—Physical form and dimensions—Body dimensions and proportions—Special variations—Dwarfs. Midgets

GR555              Folklore—By subject—Dwarfs

The former refers to people (the fact that former headings are kept in the caption is something else entirely and one which LC seems unlikely to change).

The latter refers to magical fantasy creatures from Germanic mythology.


Giants is an NT of Abnormalities, Human (but not Tall people) but its NTs include Adamastor (Legendary character) and Laestrygonians (Greek mythology). Following the logical progression — the implication is either that Adamastor and the Laestrygonians are abnormal humans (they are not) or that LCSH is co-mingling the two usages of the term.

Further confusing the issue is that Amycus (Greek mythology) and Cyclopes (Greek mythology) are NTs of Giants–Mythology

Giants has a single classification link:

GN69         Anthropology—Physical anthropology. Somatology—Human variation—Physical form and                      dimensions—Body dimensions and proportions—Special variations—Giants

and thankfully not

GR560     Folklore—By subject—Ogres. Giants


So while Giants is less confused in LCSH than ‘Dwarfs’ is but both could benefit from being separated into two groups e.g.

Dwarfs (people) and Dwarfs (folklore)

Gigantism (condition) and Giants (folklore)


Now turning to live usage:


are all books about people which have the subject heading Giants

are all books about folkloric creatures which have the subject heading Giants

are all books about people which have the subject heading Dwarfs

are all books about folkloric creatures which have the subject heading Dwarfs


As the SHM Memo H 187 states: “Establish a subject heading for a topic that represents a discrete, identifiable concept”

They have failed in this regard and conflated personhood with folklore. Let’s rectify that.


Follow up to Faceting Musing

This is a follow up post to my previous post on faceting class of people/ethnic groups in LCSH. If you haven’t read that one, go back and read it first!

After I promoted that post a bit on twitter, I got into some lively discussion with MARCinaColdClimate and Ethan Fenichel on twitter. A piece of that discussion centered around our subject indexes, that is — if we were to create new headings based on atomic units of headings (i.e. “Catalogers”+ “Jews” becomes “Catalogers Jews”) someone searching in a subject index for ‘Jews’ wouldn’t find the term.

Two responses to that problem:

  1. Our indexes are already out of whack because we are inconsistent in our ‘ordering’ of identity facets in LCSH already.

Gay Men, White will file in the ‘Gs’ but  ‘African American gay men’ will file in the ‘As’

  1. A solution! During index generation, permute the 650s (i.e. 3 terms become 6 in the index)

While obviously I have no idea how your (or my!) ILS generates its index, I figured I’d at least give it a shot with some MARCXML/XSLT.

I wanted to try two different examples, one in which the three terms are already in a single $a of a single 650 (as demonstrated in L 410 Section 2: Option 1.a) and one in which each term was in its own 650 as expected.

Given this input:


<?xml version=”1.0″ encoding=”UTF-8″?>
<slim:collection xmlns:slim=http://www.loc.gov/MARC21/slim&#8221;>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>African Americans</slim:subfield>
<slim:subfield code=“a”>Gays</slim:subfield>
<slim:subfield code=“a”>Jews</slim:subfield>

<slim:datafield tag=“650”>
<slim:subfield code=“a”>Catalogers</slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Lesbians</slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Older people</slim:subfield>

This transformation:

<?xml version=”1.0″ encoding=”UTF-8″?>
<xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform&#8221;
    xmlns:xs=http://www.w3.org/2001/XMLSchema&#8221; xmlns:slim=http://www.loc.gov/MARC21/slim&#8221;
    xmlns:ng=http://example.com/ng&#8221; exclude-result-prefixes=“xs ng” version=“2.0”>

    <xsl:output indent=“yes”/>

    <xsl:function name=“ng:permute” as=“item()*”>
<xsl:param name=“head” as=“item()*”/>
<xsl:param name=“tail” as=“item()*”/>
<xsl:when test=“count($tail) eq 1”>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>

                            <xsl:value-of select=“concat(normalize-space(.),’ ‘)”/>

                        for $pos in (1 to count($tail))
                            $tail[$pos]), $tail[position() ne $pos])”

    <xsl:function name=“ng:permutations” as=“element()”>
<xsl:param name=“input” as=“item()*”/>
                    for $pos in (1 to count($input))
                        ng:permute($input[$pos], $input[position() ne $pos])”

    <xsl:template match=“/”>
<xsl:apply-templates select=“slim:collection/slim:record/slim:datafield[1]”/>

    <xsl:template match=“slim:datafield[count(slim:subfield) > 1]”>
<xsl:variable name=“sorted-subfields” as=“element()*”>
<xsl:perform-sort select=“slim:subfield[@code = ‘a’]”>
<xsl:sort select=“.”/>
<xsl:copy-of select=“ng:permutations($sorted-subfields)”/>

    <xsl:template match=“slim:datafield[count(slim:subfield) eq 1]”>
<xsl:variable name=“sorted-subfields” as=“element()*”>
<xsl:perform-sort select=“../slim:datafield”>
<xsl:sort select=“slim:subfield”/>
<xsl:copy-of select=“ng:permutations($sorted-subfields)”/>


Produces this result:

<?xml version=”1.0″ encoding=”UTF-8″?>
<slim:collection xmlns:slim=http://www.loc.gov/MARC21/slim&#8221;>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>African Americans Gays Jews </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>African Americans Jews Gays </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Gays African Americans Jews </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Gays Jews African Americans </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Jews African Americans Gays </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Jews Gays African Americans </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Catalogers Lesbians Older people </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Catalogers Older people Lesbians </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Lesbians Catalogers Older people </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Lesbians Older people Catalogers </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Older people Catalogers Lesbians </slim:subfield>
<slim:datafield tag=“650”>
<slim:subfield code=“a”>Older people Lesbians Catalogers </slim:subfield>

The permutation functions can take any number of arguments (until memory runs out I guess…) and even sorts ’em alphabetically! Pretty neat, huh?

Of course looking at this…another problem jumped out at me:

Grammatical agreement!

Take the first example: when ‘Jews’ is the terminal word, it’s fine — but if it isn’t it really needs to be ‘Jewish’.

In the second example, I can’t really imagine ever having ‘Catalogers’ first as a term. It’d have to be something like “Cataloging Lesbian Older people’ — which sounds like a function not a description.

Simply permuting terms would not be enough, the system would have to be able to tweak them.


As always — check out the full approved list

You Don’t Have to Use New LCSH to Work Here

But It Helps!


A note before we begin:

All headings with the term ‘Dobro’ have been changed to ‘Resonator guitar’



Bottles in art

This is not a real ad, but its very #OnBrand
This is not a real ad, but its very #OnBrand

Digital Badges

pictures of digital badges
Congrats you win 100 monkeys!

Haunted palaces

Fun fact, this is actually an adaptation of Lovecraft's, "The Case of Charles Dexter Ward", not the Poe poem
Fun fact, this is actually an adaptation of Lovecraft’s, “The Case of Charles Dexter Ward”, not the Poe poem

Jewish punk rock musicians

Put a tsipur on it!
Put a tsipur on it!

Kraken in literature

The Kraken is awake, and it hates my chicken-leg shirt!

Maker movement

Image result for maker movement
I hope Rosie is getting some royalties from all this…


Image result for pill overdose
I find my medicine really useful but it’s a cool image

Militarism on television

It counts.

NetBeans (Computing platform)

Image result for oxygen xml
Because I’m not free!

Quality assurance–Awards

I was pretty surprised at how many options I got for this search

Traffic cameras

Image result for traffic camera
More like, “Dope Owl cameras”

Women farmers in motion pictures

What? It’s a *kind* of farming!

Use Under….What?


Several weeks ago I got my brain all fuddled around a specific subdivision

Now Melanie Polutta and Danny Joudrey set me straight about my error here, but let’s take a look at what was tripping me up:

Use as a form subdivision under names of individual religious and monastic orders and under individual religions, individual Christian denominations, classes of persons and ethnic groups for whose use the prayers are intended; under names of individual saints, deities, etc., to whom the devotions are directed; and under topical headings for prayers and devotions on those topics.

Use as a topical subdivision under names of individual religious and monastic orders and under individual religions, individual Christian denominations, classes of persons, and ethnic groups for works about prayers intended for their use; under names of individual saints, deities, etc., for works about devotions directed to them; and under topical headings for works about prayers and devotions on those topics.

That’s….an awful lot of things to divide under, right? If you made it to the end, you found “topical headings.” My error was thinking that a topical heading meant any heading, and therefore a class of person could also be a topical heading. Because after all, everything is a topic, right?

Not so!

In LCSH terms, if you’re looking for something that’s useable under any heading then you want the word: “subject”

some examples:

—Electronic information resources
Use as a topical subdivision under subjects for works about electronic information resources on those subjects.

Use as a form subdivision under subjects for lists of publications about the subject that provide information about their location, availability, etc.

—Computer games
Use as a form subdivision under subjects for computer games on those subjects.

Those can be used as subdivisions under anything in LCSH (assuming the resource actually fulfills the qualifications).

For the most part though, use of subdivisions is tightly controlled as you saw in the –Prayers and devotion example.

Before beginning to subdivide any heading, it can be really useful to ask yourself what type of heading am I trying to subdivide? Is this a class of person? A corporate body? A war?


I mentioned use of subdivisions being controlled, this is a bit of a misnomer. We talk about controlling headings all day — hit Shift+F11 in OCLC and control those headings! Turn ’em blue and feel good about yourself. But just because you’ve ‘controlled’ a heading doesn’t mean you’ve used it correctly. OCLC isn’t performing any validation beyond string matching.

Enter the 072 field.

In authority data, the 072 field is defined as:

Code for the subject category that is associated with the 1XX field in an established heading record or a node label record.

Code indicates the relative position of the heading in a particular hierarchical arrangement in the thesaurus specified by the value in the second indicator position or in subfield $2 (Code source). Field 072 is repeated for each location of the heading in a specific thesaurus and for multiple subject category codes when a heading is common to different thesauri.

the tl;dr version is this: it’s a code to indicate (to a machine) what category of subject this heading is.

As I spent some time praising LCDGT in my last post, let’s hop over to them again and show you what I mean.

072 7 $a eth $2 lcdgt
072 7 $a rel $2 lcdgt
150 $a Jews

See, those 072 fields tell us that ‘Jews’ belongs to the ‘eth’ category and the ‘rel’ category. Now because I know my LCDGT, I know that that means the Ethnic/cultural group and Religion group.

Now imagine a world where all the LCSH were coded in the 072s like that. Thanks to Galen Charlton (and his Evergreen wizardry), here’s an actual example:

072 7 $a H 1145.5 $2 lcsh
151 $a Big Round Lake (Polk County, Wis.)

H1145.5 is the memo governing “Bodies of Water”. There’s also a subdivision –Navigation which can be used as a topical subdivision under names of individual bodies of water, and it has an 073 field (the subdivision counterpart to 072):

073 $a H 1145.5 $z lcsh
180 $x Navigation

So the 072 field says to a machine, “hey I’m a body of water (or at least an H1145.5), if you’re going to subdivide me, make sure the subdivision is pH balanced for me!”

Then the 073 field would confirm or deny and the machine would deliver a helpful message to the user.

Now I know what you’re going to say, “Wow Netanel, that sounds great, and also you’re very handsome! Why doesn’t OCLC already do this?”

That’s a great question, and also I know.

One obstacle is the vast majority of LCSH headings do not have an 072, and same goes for subdivisions and 073.

I wish there were a crowd-sourcing program whereby LC has a little interface: a term pops up, you select from the list of “category types” and maybe if three independent people select the same thing, it goes into the record. I know I’d waste time helping myself and all future catalogers out by doing that.

This feels very do-able, so let’s make it happen! I want to live in the future where we say, “I controlled the headings” and it means controlled and validated.



(Ever-resourceful Galen pointed me towards this document about the PSD tackling this very task…from 2012 — the short of it is, so many of the types of headings have exceptions that they’d need human intervention for most of the headings. (my personal favorite “make sure you remember this” exception is that ‘African Americans’ is an ‘Ethnic Group (H1103)’ and ‘African American dentists’ is a ‘Class of Persons (H1100)’ and same goes for all analogous headings.) They were only going to focus on:

H1120       Names of families
H 1145.5   Bodies of water
H 1151.5   Types of educational institutions
H 1185      Religions
H 1187      Christian denominations
H 1195      Land vehicles
H 1200     Wars

I’d be very curious as to if they have any updates on the project and will contact policy@loc.gov to see)


I want to return to something I eluded to at the top of the post and perhaps danced around.

In order for full-effective use of 072/073s we’ll need to enumerate all possible values.

So here’s my question: are there types besides:

H 1100 Classes of Persons
H 1103 Ethnic Groups
H 1105 Corporate Bodies
H 1110 Names of Persons
H 1120 Names of Families
H 1140 Names of Places
H 1145.5 Bodies of Water

H 1147 Animals
H 1148 Art
H 1149 Chemicals
H 1149.5 Colonies
H 1150 Diseases
H 1151 Individual Educational Institutions
H 1151.5 Types of Educational Institutions
H 1153 Industries
H 1154 Languages
H 1154.5 Legal Topics
H 1155 Legislative Bodies
H 1155.2 Groups of Literary Authors
H 1155.6 Literary Works Entered Under Author
H 1155.8 Literary Works Entered Under Title
H 1156 Literatures
H 1158 Materials
H 1159 Military Services
H 1160 Musical Compositions
H 1161 Musical Instruments
H 1164 Organs and Regions of the Body
H 1180 Plants and Crops
H 1185 Religions
H 1186 Religious and Monastic Orders
H 1187 Christian Denominations
H 1188 Sacred Works
H 1195 Land Vehicles
H 1200 Wars

Absolutely there are!


$x Access control (May Subd Geog)
Use under types of archives, records, computers, computer networks, and statistical and data-gathering services

$x Air conditioning (May Subd Geog)
Use under types of buildings, vehicles, and other constructions.

x Digitization (May Subd Geog)
Use under types of library materials.

Therefore as part of this, we’d have to figure out what codes to use in the 072/073 if there is no specific memo for that type of heading.

Finally my biggest question of all:

What is a topical heading? Is a topical heading anything coded a 150? No, because it could be a Class of Person, or a War (for instance). It certainly can’t be a heading coded  100, 110, 111, 148, 151 or 155, so 150 is necessary but not sufficient. Is it anything which isn’t one of the other types of headings? Because if that’s the case, we really need to work on the full enumeration of what types of headings there are!

A Faceted LCSH? A Non-Proposal Proposal

I know what you’re thinking, ‘Faceted LCSH’? Netanel! We already have that it’s called FAST and its main purpose is to confuse new catalogers who encounter seemingly duplicate headings in their copy-cataloging work.

(I kid, I kid, OCLC–we all love FAST please don’t come for me)


This is not a proposal to replace LCSH with a faceted subject terminology, rather it’s me musing on something that’s been in the back of my head since my deep dive into the LCDGT, and then came even farther towards the front of my head through increased tangling with LCSH proposals.


So what the heck am I talking about?

Well the other day, I noticed that there was no ‘African American sexual minorities’ as an LCSH term. So I wrote up the proposal and submitted it.

But I started thinking about LCDGT again. This is an excerpt from the manual, L 485 (emphasis mine)

If a creator self-identifies as belonging to a group that
includes several discrete elements, assign a separate term for each element that will be useful for discovery purposes. Example:
An author who self-identifies as a lesbian teenager. Assign the terms
Lesbians and Teenagers.


Now in our old friend, LCSH we of course have the specific term, “Lesbian teenagers” as well as the more general terms “Lesbians” and “Teenagers“. But I started thinking about the flexibility if our cataloging rules let us assign this way in subjects settings.

Because here’s the thing. Sometimes the resource in hand is about “Gay flight attendants“, well great — LCSH has you covered! But what if your resource is about African American flight attendants? No dice, that’s not a term…yet. You’d have to spend the time (and have had the training) to create it, wait for months to hear back, and even then maybe you messed it up and need to resubmit.

But we already have the terms ‘African Americans‘ and ‘Flight attendants‘! You could assign both and move onto the next resource to be cataloged.

The fact is LCSH suffers from some bloat in that the ‘classes of person’, ‘occupations’, and ‘age groups’ (yes the very same groups identified by LCDGT) end up crossing and recrossing with each other to create new terms and each term requires its own authority record and research for proposals and time for the PSD to approve.

Another advantage of allowing us to assign terms like the LCDGT is that it would eliminate some of the inconsistencies (every cataloger’s bane) found in LCSH.

Take “Gay youth” and “Young gay men” for example — one uses ‘youth’ the other uses ‘young’. Under this modification one would be the array of:

  • Gays
  • Young adults

and the other assigned:

  • Gays
  • Young adults
  • Men

This way you drop the inconsistency over “youth” vs. “young” as well as the inconsistent ordering of terms.

Anyway — this isn’t a formal proposal, because I haven’t thought it all the way through to the inevitable problems, just something to think about.