MARC21 is the current data carrier for library bibliographic records.

  • Legacy and wide-spread
  • Interoperability is a core requirement of Library of Congress Bibliographic Framework
  • Colorado College's currently uses its legacy ILS to manage over 875,590 MARC21 records for its print holdings and electronic resources


Transitional Python Classes

To facilite development of this proof-of-concept project, FRBR-Redis-Datastore uses the three simple Redisco Python models that provide lightweight object-mappings from MARC21 records using pymarc.

MARC21Record Python Class

class MARC21Record(models.Model):
    Basic MARC Record in the Redis datastore
    marc_fields = models.ListField(MARC21Field)
    leader = models.Attribute()

MARC21Field Python Class

class MARC21Field(models.Model):
    Basic MARC Field in the Redis datastore
    tag = models.Attribute()
    data = models.Attribute()
    indicators = models.ListField(str)
    subfields = models.ListField(MARC21Subfield)

MARC21Subfield Python Class

class MARC21Subfield(models.Model):
    MARC Subfield in the Redis datastore
    code = models.Attribute()
    value = models.Attribute()

Redis Datastore

Using Redisco transitional object Redis models to store a MARC21 record in Redis in FRBR-Redis-Datastore has the following characteristics in the Redis datastore:

Redis Key Redis Type Example Value
MARC21Record:1 hash leader:'01184nam 2200313Ia 4500'
MARC21Record:1:marc_fields list ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24']
MARC21Field:5 hash tag:"035"
MARC21Field:5:subfields list ['1', '2', '3']
MARC21Subfield:2 hash code:'b'

Relationship to FRBR

The MARC21 relationship to FRBR in the FRBR-Redis-Datastore uses existing work done by the Library of Congress in mapping MARC21 fields to FRBR entities as well as the RDA-specific MARC fields.