lcnetdev / marc2bibframe2

Convert MARC records to BIBFRAME2 RDF
http://www.loc.gov/bibframe/
Creative Commons Zero v1.0 Universal
88 stars 35 forks source link

Incorrect MADS/RDF assertions for Persons as subjects #237

Open timathom opened 7 months ago

timathom commented 7 months ago

Scenario When a subject field with a personal name and LCNAF IRI in $0 is converted, the following output is produced:

<bf:subject>
  <bf:Agent rdf:about="http://id.loc.gov/authorities/names/no2016089622">
    <rdf:type rdf:resource="http://id.loc.gov/ontologies/bibframe/Person"/>
    <rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#PersonalName"/>
    <madsrdf:authoritativeLabel>Hall, John Charles, 1821-1890</madsrdf:authoritativeLabel>
    <madsrdf:isMemberOfMADSScheme rdf:resource="http://id.loc.gov/authorities/subjects"/>
    <bflc:marcKey>60010$aHall, John
      Charles,$d1821-1890.$0http://id.loc.gov/authorities/names/no2016089622</bflc:marcKey>
    <rdfs:label>Hall, John Charles, 1821-1890</rdfs:label>
    <bf:source rdf:resource="http://id.loc.gov/authorities/subjects"/>
  </bf:Agent>
</bf:subject>

Issues

  1. The Agent is typed as both a Person and a PersonalName, which is inconsistent.
  2. The PersonalName is said to be a member of the MADS Scheme http://id.loc.gov/authorities/subjects when it's actually a name authority. Similarly with the bf:source assertion.

Expectation The converted output should look more like this:

<bf:subject>
  <bf:Agent rdf:about="https://library.yale.edu/data/77692#Agent600-21">
    <rdf:type rdf:resource="http://id.loc.gov/ontologies/bibframe/Person"/>
    <rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#RWO"/>
    <madsrdf:isIdentifiedByAuthority>
      <madsrdf:PersonalName rdf:about="http://id.loc.gov/authorities/names/no2016089622">
        <madsrdf:authoritativeLabel>Hall, John Charles, 1821-1890</madsrdf:authoritativeLabel>
        <madsrdf:isMemberOfMADSScheme rdf:resource="http://id.loc.gov/authorities/names"/>
        <bf:source rdf:resource="http://id.loc.gov/authorities/names"/>
      </madsrdf:PersonalName>
    </madsrdf:isIdentifiedByAuthority>
    <bflc:marcKey>60010$aHall, John Charles,$d1821-1890.$0http://id.loc.gov/authorities/names/no2016089622</bflc:marcKey>
    <rdfs:label>Hall, John Charles, 1821-1890</rdfs:label>
  </bf:Agent>
</bf:subject>

Source record

<marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
    <marc:leader>00892cpc a2200301 a 4500</marc:leader>
<marc:controlfield tag="001">77692</marc:controlfield>
<marc:controlfield tag="005">20230428173400.0</marc:controlfield>
    <marc:controlfield tag="006">t                 </marc:controlfield>
    <marc:controlfield tag="008">810306s1979    utuac         00010aeng d</marc:controlfield>
    <marc:datafield tag="035" ind1=" " ind2=" ">
      <marc:subfield code="a">(OCoLC)ocn702248219</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="035" ind1=" " ind2=" ">
      <marc:subfield code="a">(CStRLIN)CTYG22151230-B</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="035" ind1=" " ind2=" ">
      <marc:subfield code="9">AAH8181YL</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="035" ind1=" " ind2=" ">
      <marc:subfield code="a">77692</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="040" ind1=" " ind2=" ">
      <marc:subfield code="a">UPB</marc:subfield>
      <marc:subfield code="c">UPB</marc:subfield>
      <marc:subfield code="d">CtY</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="043" ind1=" " ind2=" ">
      <marc:subfield code="a">e-uk-en</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="079" ind1=" " ind2=" ">
      <marc:subfield code="a">702180392</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="090" ind1=" " ind2=" ">
      <marc:subfield code="a">BX8661</marc:subfield>
      <marc:subfield code="b">+H35 1979 (LC)</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="100" ind1="1" ind2=" ">
      <subfield xmlns:zs="http://www.loc.gov/zing/srw/" code="a">Hall, John Charles,</subfield>
      <subfield code="d">1821-1890.</subfield>
      <subfield code="0">http://id.loc.gov/authorities/names/no2016089622</subfield>
    </marc:datafield>
    <marc:datafield tag="245" ind1="1" ind2="0">
      <marc:subfield code="a">John Charles Hall, mission journal 1852-1857 :</marc:subfield>
      <marc:subfield code="b">and other items.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="260" ind1=" " ind2=" ">
      <marc:subfield code="a">Salt Lake City :</marc:subfield>
      <marc:subfield code="b">H.V. Hall,</marc:subfield>
      <marc:subfield code="c">[1979?]</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="300" ind1=" " ind2=" ">
      <marc:subfield code="a">116 p. :</marc:subfield>
      <marc:subfield code="b">ill., ports. ;</marc:subfield>
      <marc:subfield code="c">29 cm.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="336" ind1=" " ind2=" ">
      <marc:subfield code="a">unspecified</marc:subfield>
      <marc:subfield code="2">rdacontent</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="337" ind1=" " ind2=" ">
      <marc:subfield code="a">unspecified</marc:subfield>
      <marc:subfield code="2">rdamedia</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="338" ind1=" " ind2=" ">
      <marc:subfield code="a">unspecified</marc:subfield>
      <marc:subfield code="2">rdacarrier</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="600" ind1="1" ind2="0">
      <subfield xmlns:zs="http://www.loc.gov/zing/srw/" code="a">Hall, John Charles,</subfield>
      <subfield code="d">1821-1890.</subfield>
      <subfield code="0">http://id.loc.gov/authorities/names/no2016089622</subfield>
    </marc:datafield>
    <marc:datafield bib="77692" tag="650" ind1=" " ind2="0">
      <subfield code="a">Latter Day Saints</subfield>
      <marc:subfield code="x">Missions.</marc:subfield>
    </marc:datafield>
    <marc:datafield bib="77692" tag="650" ind1=" " ind2="0">
      <subfield code="a">Latter Day Saints</subfield>
      <marc:subfield code="z">England.</marc:subfield>
    </marc:datafield>
    <marc:datafield tag="928" ind1=" " ind2=" ">
      <marc:subfield code="a">AC031297</marc:subfield>
    </marc:datafield>
  </marc:record>
kefo commented 7 months ago

Thanks for this, Tim. This is a known issue (but good to have it tracked here) and slated for clean up in the next release or two.

FWIW, the plan is to comb through the conversions - this one and bf2m - and sort this out completely.

ntra00 commented 7 months ago

I think some of this is addressed already in v2.5. We no longer link to authorities/names, using instead the rwo. So take a look at this where Mark Twain is the subject: https://id.loc.gov/tools/bibframe/compare-id/full-rdf?find=13621412

<bf:subject >
<bf:Person rdf:about="http://id.loc.gov/rwo/agents/n79021164" >
<rdfs:label >Twain, Mark, 1835-1910</rdfs:label>
<bflc:marcKey >1001 $aTwain, Mark,$d1835-1910</bflc:marcKey>
</bf:Person>
</bf:subject>

I"m not saying we're done, but we've started.

timathom commented 7 months ago

Ah, interesting. So, it works for label lookups but not yet with existing $0 IRIs

kefo commented 7 months ago

We can manipulate the BF when it exits via ID, which is what you are seeing in Nate's example, but this is, at heart, a conversion issue. The ID code is flipping things into the correct, or at least a better, shape. The raw conversion output pretty much looks like the example above:

<bf:subject>
  <bf:Agent rdf:about="http://id.loc.gov/resources/REPLACE/13621412#Agent600-19">
    <rdf:type rdf:resource="http://id.loc.gov/ontologies/bibframe/Person"/>
    <rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#PersonalName"/>
    <madsrdf:authoritativeLabel>Twain, Mark, 1835-1910</madsrdf:authoritativeLabel>
    <madsrdf:isMemberOfMADSScheme rdf:resource="http://id.loc.gov/authorities/subjects"/>
    <bflc:marcKey>60010$aTwain, Mark,$d1835-1910.</bflc:marcKey>
    <rdfs:label>Twain, Mark, 1835-1910</rdfs:label>
    <bf:source rdf:resource="http://id.loc.gov/authorities/subjects"/>
  </bf:Agent>
</bf:subject>