Black DH and a Challenge in Document Data Modeling

Anna Julia Cooper's Responses to the Survey of Negro College Graduates

Alice Rong Elisa Beshero-Bondar Shirley Moody-Turner
grad w/ bright future Prof. of DH Co-Director, #DigBlk
@AliceLR98 @epyllia @docmoodyturner


Penn State University

Link to these slides: https://bit.ly/AJC-Survey

Presentation for ACH 2021: 22 July 2021
SI2 Papers:  (2:15pm - 3:15pm CT)

Anna Julia Cooper Digital Collection

Makini Johnson, Lopez Matthews, Shirley Moody-Turner, Adrena Ifill

Undisputed Dignity: Preserving Black Women’s History and Material Culture

 

Student Work with the Digital Collection

Transcribe Cooper - Manifest

Transcribe Cooper - Zooniverse

From Digital Image  Transcription  Reconciled Text

 

Consultation between SM-T and EB-B in summer 2020. . .

AJC's response to a survey of Negro College Graduates in 1930

  • AJC's handwritten responses frequently exceed the formal boundaries of the printed survey form
  • Question 65 asks about her “racial philosophy” and provides four dotted lines for a response.
  • AJC’s response starts in the lines and continues on a back page of the survey.
  • Her response to this question is excerpted and published as an essay, without the context of the rest of the survey.

TEI Document Data Modeling Challenge

 

  • How can text encoding model the interaction between the survey prompts and AJC's handwritten responses?
     
  • How much does AJC exceed the formal boundaries allotted for her responses?
     
  • What historical data about people, organizations, events is recorded in this document?

TEI assignment series

Class as a whole:

  • Study the document, think about its structure
  • Research the TEI Guidelines: Which elements are most useful?
  • Try blocking up a portion of the survey in TEI (TEI-All, oXygen)
    • Class of 25 students submits variety of code responses
    • Some baffled, most attempting something
    • Multiple students find their way to parts of the TEI Header and coding metadata about handDesc and typeDesc
    • Alice Rong's response makes lots of progress on coding the survey questions with their handwritten responses
  • EB-B combines student input, creates a project ODD schema to customize the TEI
  • Students code parts of the survey as class exercise

AJC Survey as Semester Project Option

  • Semester project: short document data modeling project
  • AJC survey = one of six options for the semester project
     
  • Challenge to students:
             
                 Transcribe, Encode, Curate, Process, Re-mediate
     
    • ​Curate the documents in TEI or your own XML on GitHub
      • Document data modeling: structure significant data using markup
        • with schema rules you define, or
        • with a TEI ODD customization building on EB-B's start (AJC survey)
    • Transform XML with XSLT into HTML (on GitHub Pages websites)
      • share a reading view on a project website
      • explore research questions with the data you marked
      • highlight project data and metadata

Document data modeling

  

How the TEI was not as helpful as we'd like

(no examples for survey forms in handwritten sources)

 

Alice's solution! Figuring out a way...

 

 

 

TEI Encoding Decisions

  • Main sections of the survey categorized with the <div1> element.
     
  • Survey questions and respective responses categorized with the <div2> and <ab> elements.
     
  • AJC's responses categorized with the <add> element.
     
  • AJC's deletions marked with the <del> element
    • AJC occasionally would cross-out, strike-through survey text.
       
  • People, places, and organizations marked with <persName>, <placeName>, and <orgName> respectively.

Notice:

  • AJC crosses out "Wife or" and capitalizes "Husband"

Survey Questions 13 and 14:
AJC's edits to the survey

TEI Encoding of Questions 13 and 14: hierarchy of nested elements

<div1 type="section" n="I">
  ...
  <div2 type="question" n="13">
      <ab> 13. Do you own your home? <add hand="#AJC">Yes</add> Value of home <add
           hand="#AJC">18000</add> Other property owned <add hand="#AJC">Cottage in
           <placeName>Raleigh N.C.</placeName> 2 lots in 
           <placeName>upper mallboro Md.</placeName></add> Value 
           <add hand="#AJC">Uncertain, two or three thousand perhaps.</add>
      </ab>
  </div2>
  <div2 type="question" n="14">
      <ab> 14. <del hand="#AJC" rend="strikethrough">Wife or</del>
           <del hand="#AJC" rend="overwrite">h</del>Husband: Birthplace 
           <add hand="#AJC"><placeName>Nassau British W.I.</placeName></add> 
           Present occupation <add hand="#AJC">deceased</add>
           Education: (Draw circle around last grade completed) 
           <add hand="#AJC">Educated for
           Priest in the <orgName>Episcopal Church</orgName>.</add>
           <lb/>Grammar school---1-2-3-4-5-6-7-8; High school---1-2-3-4;
           College---1-2-3-4-5-6-7-8 
           <lb rend="1-L"/>Of what college or professional school a
           graduate <add hand="#AJC"><orgName>St. Augustine's Divinity 
           School</orgName></add> Degree <add hand="#AJC" rend="2-L">Ordained Deacon 
           &amp; passed examinations for the priesthood under 
           <persName>Bishop Lyman Bp</persName> of <placeName>N.C.</placeName></add>
       </ab>
  </div2>
  ...
</div1>

Tables, Marks, Deletions, Gaps, and Overflow

  • TEI <table> element for tables in the survey
     
  • Various handwritten marks (e.g. checkmarks, underlines, arrows, etc.) are categorized with the <metamark> element
     
  • <gap> used for unreadable portions, including where photo cuts off at page edges.
     
  • <unclear> used for best effort to decipher difficult handwriting.
     
  • Overflow and continuation of answers in later pages: (difficult decisions!)
    • Organization by question rather than by page layout: Overflow answers on other pages are coded within the <div2> of a survey question.
    • <note> element to explain location of the overflow in the source.
    • @rend attribute to count lines provided by survey, and
      <lb/> element to indicate AJC’s line-beginnings. (inconsistent code!)

Questions 36-38 and a bit from 22:

Two instances of overflow and unreadable portions

  • top: overflow in upside-down writing!
  • bottom left: overflow from question 22 on previous page!
  • gaps from torn paper on left-hand side

 

TEI Encoding of Questions 36, 37, and 38: overflow, unclear, gap

<div2 type="question" n="36">
    <ab rend="1-L"> 36. How well did you do in college? <add hand="#AJC">Hardly a fair
        question for personal answer. I did my best &amp; <metamark
        rend="short-connecting-line"/><lb/><note resp="#ebb">Here AJC’s text flows
        upside-down along the top of the form</note> 4 Professors including
        <persName>Prest. Fairchild</persName> gave me letters rating me first in the
        class.</add>
    </ab>
</div2>
<div2 type="question" n="37">
    <ab rend="1-L"> 37. To what extent were you influenced by religious training,
        personalities or the religious atmosphere of your school? <add hand="#AJC">
        <lb/>I entered <orgName>Oberlin</orgName> a bigoted "Churchman". I left 
        not the slightest attempt at <unclear><supplied>proselyting</supplied>
        </unclear>. &amp; yet<gap reason="image cut off on right margin"/>
        <lb/>altho I continued to attend the little Episcopal Church religiously the
        breadth &amp; real catholicity of the 
        <lb/><orgName>Oberlin</orgName> spirit the friendly contacts
        &amp; wider study had the inevitable
        result which I consider humanizing of one's
        <lb/><gap reason="image cut off on left margin"/><supplied>"ch</supplied>
        <unclear><supplied>urchianity</supplied></unclear>." </add>
    </ab>
</div2>
<div2 type="question" n="38">
    <ab rend="3-L"> 38. What is your attitude toward educational methods of instruction
        in college? (Mention the strongest and weakest features? <add hand="#AJC">
        <lb/> Too broad to be answered in 2 lines. If the post was machine method of
        "tests &amp; measurements" to <lb/>Sting out the unfit prevails we never can
        tell what is to be done for the untalented plodder who <lb/>continues to want
        more. You may have your Loebs &amp; Leopolds &amp; reject Lindbergs. </add>
    </ab>
</div2>

Overflow from one page to another: Question 22

TEI Encoding of Question 22:
<supplied> and <note>

<div2 type="question" n="22">
  <ab rend="3-L"> 22. As you think of it now, do you regard your preparatory training,
    before college, as adequate or defective? i.e., What deficiencies or omissions in
    that period do you feel would be of value to you? Please comment briefly <add
    hand="#AJC"><lb/>Under <persName>Dr. J. <surname>Brinton
    Smith</surname></persName>, founder, I was made pupil teacher at the age of
    8, first for board &amp; tuition<gap reason="image cut off on right margin"/>
    <lb/>Teaching &amp; studying, married &amp; widowed in this <q>world</q> of a
    church school I think the preparation for c<supplied><note>words continue onto the 
    next page of the survey</note>ollege</supplied> <lb/>may pass as <q>good</q> for 
    the time in that I was admitted on examination with some praise to the
    Sophomore c<supplied><note>words continue onto the next page of the survey</note>lass 
    of Oberlin</supplied> <lb/>Entrance exams, in the Anabasis, the Iliad <abbr>Caes</abbr>
    <abbr>Cic</abbr><!--ebb: I think these are abbreviations for Caesar and Cicero, which 
    used to be taught a lot in a classics (ancient Greek/Roman literature) curriculum in 
    the late 19th-century.-->, Plane &amp; Solid Geometry <supplied><note>words continue 
    onto the next page of the survey</note> Passed.</supplied>
    <lb/>Conditioned in Trig. Mechanics, Physics, Hist. of Civilization <metamark
    rend="short-connecting-line"/><add place="below">&amp; Science of
    Government</add>, the Odyssey made up
    <unclear><supplied>in</supplied></unclear> one yea<supplied
    reason="image cut off on right margin">r <note>words continue onto the next page of 
    the survey</note> <unclear>to entrance conditions in</unclear>.</supplied></add>
  </ab>
</div2>

AJC adds a row to a table in the survey

Code for Question 23 (scroll down for AJC's added row)

<div2 type="question" n="23">
  <ab> 23. College and Professional Training:</ab>
  <table rend="boxed" rows="6" cols="3">
    <row role="label">
      <cell><hi rend="italic">Institution</hi></cell>
      <cell><hi rend="italic">Period (give dates)</hi></cell>
      <cell><hi rend="italic">Diploma or degree</hi></cell>
    </row>
    <row n="1">
      <cell>1 <add hand="#AJC">
        <orgName>St. Aug. Normal &amp; Collegiate</orgName></add></cell>
      <cell><add hand="#AJC">from early youth to 1881</add></cell>
      <cell><add hand="#AJC">None</add></cell>
    </row>
    <row n="2">
      <cell>2 <add hand="#AJC">
        <orgName>Oberlin</orgName></add></cell>
      <cell><add hand="#AJC">Sept. '81 -- June '84</add></cell>
      <cell><add hand="#AJC">A.B.</add></cell>
    </row>
    <row n="3">
      <cell>3 <add hand="#AJC">
        <orgName>Oberlin</orgName> on 3 yrs. College Teaching</add></cell>
      <cell><add hand="#AJC">'84 --- '87</add></cell>
      <cell><add hand="#AJC">M.A</add></cell>
    </row>
    <row n="4">
      <cell>4 <add hand="#AJC"><orgName>Columbia</orgName> on 4 yrs graduate courses
            in S.S.</add></cell>
      <cell><add hand="#AJC">1914, 15, 16, 17</add></cell>
      <cell><add hand="#AJC" rend="2-L">Guilde Internationale Paris
            S.S</add></cell>
    </row>
    <row rend="none">
      <!-- added by AJC, not originally part of surey -->
      <cell><add hand="#AJC">5 <orgName>Universite de Paris</orgName>, La
            Sorbonne</add></cell>
      <cell><add hand="#AJC">1924 - '25. Residence &amp; thesis</add></cell>
      <cell><add hand="#AJC"><metamark rend="verticalLine"/> PHD.</add></cell>
    </row>
  </table>
</div2>

HTML / CSS view of AJC’s added table row

Transformation: making a digital edition

  • historical data (named entities)
  • navigating the survey
  • NOT trying to make it like the original: Styling decisions 
    • making metadata pop out
    • making it navigable

       

XSLT to tabulate historical data, navigate the edition

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    xpath-default-namespace="http://www.tei-c.org/ns/1.0"
    xmlns="http://www.w3.org/1999/xhtml"
    version="3.0">
    
    <xsl:output method="xhtml" encoding="utf-8" doctype-system="about:legacy-compat"
        omit-xml-declaration="yes"/>
    
    <xsl:template match="/">
        <html>
            <head>
                <title>Anna Julia Cooper Survey Answers</title>
                <link rel="stylesheet" type="text/css" href="webstyle.css"/>
            </head>
            <body>
                <div id="middle"> 
                    <div id="banner">
                        <h1>Anna Julia Cooper</h1>
                        <h2>Responses to the Survey of Negro College Graduates</h2>
                    </div>
                    <hr/>
                    <div id="menu">
                        <a href="index.html">Main</a> <a href="aboutSection.html">About</a>
                        <a href="AJC-output.html">Edition</a><a href="document.html">Original Document</a> <a href="originalCode.html">Source Code</a>
                        <a href="projectInfo.html">Project Information</a>
                    </div>
                    <hr/>
                    
                    <div id="content">
                        <br/>
                        <h1><xsl:apply-templates select="descendant::title[@type='main']"/></h1>
                        <h1><i><xsl:apply-templates select="descendant::title[@type='sub']"/></i></h1><!-- table for orgNames, persNames, and placeNames -->           
                        <section id="table">
                            <br/>
                            <h3>Information about People, Places, and Organizations Mentioned in Survey</h3>
                            <table>
                                <tr>
                                    <th>Question number</th>
                                    <th>People</th>
                                    <th>Organizations</th>
                                    <th>Places</th>
                                </tr>
                                <xsl:apply-templates select="descendant::div2[descendant::persName or descendant::orgName or descendant::placeName]" mode="table"/>
                            </table>
                        </section>
                        <xsl:apply-templates select="descendant::div1"/>
                        
                    </div>   
                    <div id="footer">
                        <p xmlns:dct="http://purl.org/dc/terms/" xmlns:cc="http://creativecommons.org/ns#" class="license-text">This work   is licensed under <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0">CC BY-NC-SA 4.0<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1" /><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1" /></a> | GitHub code view: <a href="https://github.com/AliceR98/DIGIT-110-AJC-Survey">https://github.com/AliceR98/DIGIT-110-AJC-Survey</a></p>
                    </div>
                </div>
            </body>
        </html>
    </xsl:template>
    
    
    
    <xsl:template match="div1">
        <section id="S{count(preceding-sibling::div1) + 1}">
            <h3><xsl:apply-templates select="descendant::head[1]"/></h3>
            <xsl:apply-templates select="descendant::div2"/>
        </section>
    </xsl:template>
    
    <xsl:template match="div2" mode="table">
        <tr>
            <td>
                <a href="#Q{@n}"><xsl:value-of select="@n"/></a>      
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/persName | descendant::table/row/cell/add/persName => sort()" separator=", "/>
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/orgName | descendant::table/row/cell/add/orgName => sort()" separator=", "/>
            </td>
            <td>
                <xsl:value-of select="descendant::ab/add/placeName | descendant::table/row/cell/add/placeName => sort()" separator=", "/>
            </td>
        </tr>
    </xsl:template>
    
    <xsl:template match="div2">
        <div id="Q{count(preceding::div2) + 1}">
            <xsl:choose>
                <xsl:when test="ab">
                    <xsl:apply-templates/>   
                </xsl:when>
                <xsl:when test="table">
                    <xsl:apply-templates select="table"/>
                </xsl:when>
                <xsl:when test="list">
                    <div class="list"><xsl:apply-templates select="list"/></div>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates/>
                </xsl:otherwise>
            </xsl:choose> 
            <p class="top"><a href="#table">Back to table &#8593;</a></p>
        </div>     
        <br/>
    </xsl:template>
    
    <xsl:template match="div3">
        <xsl:choose>
            <xsl:when test="ab">
                <xsl:apply-templates/>   
            </xsl:when>
            <xsl:when test="table">
                <xsl:apply-templates select="table"/>
            </xsl:when>
            <xsl:when test="list">
                <div class="list"><xsl:apply-templates select="list"/></div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose> 
    </xsl:template>

    <xsl:template match="table">
        <table>
            <tr>
                <xsl:for-each select="row[@role='label']/cell">
                    <th><xsl:apply-templates/></th>
                </xsl:for-each>
            </tr>
            <xsl:for-each select="row[@n]">
                <tr>
                    <xsl:for-each select="cell">
                        <td><xsl:apply-templates/></td>
                    </xsl:for-each>
                </tr>     
            </xsl:for-each>
            <xsl:if test="row[@rend='none']">
                <tr class="ajcAdd">
                    <xsl:for-each select="row[@rend='none']/cell">
                        <td class="ajcAdd"><xsl:apply-templates/></td>
                    </xsl:for-each>
                </tr>     
            </xsl:if>
        </table>
    </xsl:template>
    
    <xsl:template match="list">
        <xsl:if test="descendant::head">
            <p><xsl:apply-templates select="descendant::head"/></p>
        </xsl:if>
        
        <ol type="a">
            <xsl:for-each select="item">    
                <li><xsl:apply-templates/></li>
            </xsl:for-each>
        </ol>
    </xsl:template>
    
    <xsl:template match="add[@hand]">
        <ins class="hand"><xsl:apply-templates/></ins>
    </xsl:template>
    
    <xsl:template match="metamark">
        <xsl:choose>
            <xsl:when test="@rend='checkmark'">
                <span class="meta">&#10003; </span>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    
    <xsl:template match="note">
        <span class="note"><xsl:apply-templates/></span>
    </xsl:template>
    
    <xsl:template match="supplied[not(parent::unclear)]">
        <span class="supplied">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="space">
        <span class="blank">&#160; </span>
    </xsl:template>
    
    <xsl:template match="del">
        <del><xsl:apply-templates/></del>  
    </xsl:template>
    
    <xsl:template match="unclear">
        <span class="unclear"><xsl:apply-templates/></span>
    </xsl:template>
    
    <xsl:template match="gap">
        <span class="gap">
            <xsl:value-of select="@reason"/>
        </span>
    </xsl:template>
    
    <xsl:template match="persName">
        <span class="persName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="placeName">
        <span class="placeName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="orgName">
        <span class="orgName">
            <xsl:apply-templates/>
        </span>
    </xsl:template>
    
    <xsl:template match="q">
        “<xsl:apply-templates/>”
    </xsl:template>
    
    <xsl:template match="hi">
        <xsl:choose>
            <xsl:when test="@rend='italic'">
                <i><xsl:apply-templates/></i>
            </xsl:when>
            <xsl:when test="@rend='underline'">
                <u><xsl:apply-templates/></u>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

CSS for representing a readable edition

body {
background-color: #d6ebff;
font-family: "Trebuchet MS", Helvetica, sans-serif;
}

h1, h2, h3{
    font-family: Georgia, serif;
}

ol {
list-style-type: none;
display: inline-block;
    
}

h1 {
    line-height: 80%;
}

#S1, #S2, #S3 {
    line-height: 200%;
    font-family: Georgia, serif;
}

ins {
    font-family: "Trebuchet MS", Helvetica, sans-serif;
    padding: 5px;
    border: 1.5px dashed;
    text-decoration: none;
}

#table table, #table th, #table td{
border: 1px solid #000066;    
padding: 5px;
vertical-align:top;
}

table, th, td{
border: 1.75px;
border-collapse: collapse;   
padding: 10px;
vertical-align:top;
}

table, th, td {
    border-style: solid;
}

td.ajcAdd {
    border-style: dashed;
    background-color: #d6d6d6;
}

.unclear {
    background: #ffc7c7;
}

.gap, .note {
    background-color: #d6d6d6;
    color: #c00;
    padding: 2px 5px 2px 5px;
    font-style: italic;
    font-weight: bold;
    font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
}

.supplied {
    background-color: #fdf8a1;
}

.top {
    font-size: 70%;
    line-height: 70%;
    text-align: right;
}

.stdimg {
    display: block;
    width: 40%;
    margin: auto;
}

.AJC {
    display: block;
    width: 20%;
    margin: auto;
}

.center {
    display: block;
    width: 30%;
    margin: auto;
}


#banner {
    text-align: center;
    padding: 10px 0 0 0;
}

#banner h1 {
    font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
    font-size: 3em;
    line-height: 0px;
}

#banner h2 {
    font-size: 1em;
    font-style: italic; 
}

#banner h1, #banner h2{
    color: indigo;
}

#menu {
padding: 0 0 0 5px;
height: 30px;
margin: 0px auto;
background: #27006b; 
}

#menu a {
vertical-align: baseline;
display: block;
float: left;
padding: 5px 10px 7px 10px;
text-decoration: none;
font-family: Georgia, serif;
text-align: center;
color: #ffffff;}

#menu a:hover{
    background: white;
    color: black;
    opacity: .8;
}

#middle{
    width: 1225px;
    margin: 0px auto;
    padding: 0 0 0 0px;
    background:#ffffff;
}

#content{
    width: 1100px;
    margin: 15px auto;
    
}

#footer {
height: 50px;
margin: 0px auto;
background: #27006b;
color: white;
}

#footer p{
    margin: 0px;
    padding: 10px 10px 10px 10px;
}
#footer a{
    color: #d6ebff;
}

Overflow from Questions 46 and 65

Who was AJC? What's memorable about her from prepping this digital edition? 

Conclusions: What we learned about Anna Julia Cooper
 

  • Feisty, snarky, strong-willed
  • Immense passion for education

What we learned...

  • Historical DH and Black archival resources on the web:
    • Cursive handwriting: how long will students be able to write/read it?
    • making resources like AJC's writings easy to search, navigate, and read
    • TEI needs models for handwritten surveys!
       
  • How the project could continue:

AJC-BlackDH-TEI

By Elisa Beshero-Bondar

AJC-BlackDH-TEI

presentation for the 2021 Association for Computers and Humanities (ACH) Conference, also for the 2021 Keystone DH Conference.

  • 1,450