Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Tip
titleCodex app retired as of Nolana

Please note that as of the Nolana release (Q3 2022) the Codex app was retired - these pages may still reference the app and associated modules.

Codex

Codex is a normalization and virtualization layer that allows Folio to integrate metadata about various resources regardless of format, encoding, or storage location. It is the piece that allows disparate resources to be surfaced using a common vocabulary and description.

...

Section


Column
width60%

The Codex Metadata Model


Column


...




The initial model consists of 5 objects (in orange). It is anticipated that more objects will be added to the model. Some of the future objects are already known (in blue): Work and Subject.

This model is only inspired by BIBFRAME 2, it does not strictly adhere to BIBFRAME2. A key concept is the similar central stack consisting of  Work - Instance - Item. Although in this case, which object contains specific properties may differ. This model includes an object not found in BIBFRAME: the Package. The Location and Coverage objects are shown broken out as separate objects. This is to illustrate their reusability for other parts of Folio. They are represented using distinct JSON schema definitions, but in practice they will be found nested within higher level objects such as Item or Package. 


Instance

The Instance object represents the generalized abstraction of a resource, Out of necessity this object also takes on some of the properties which BIBFRAME 2 might place in the Work.

The Instance object consists of the following fields.

Field 
TypeRequiredRepeatableDescription
idstringY 
The internal id of the Instance record (UUID)
titlestringY 
The primary title (or label) associated with the resource
altTitlestring  

An alternative title for the resource. (e.g. original language version title of a Movie)
seriesstring  

A series title associated with the resource (e.g. Harry Potter)
contributorstring 
YA set of secondary authors/creators tied to the resource
publisherstring  

The publisher, or provider, of the resource
datestring  

A date associated with the resource (e.g. publication date)
typestring  

The resource type. (e.g.: serial; monograph; audio recording; etc..)
formatstring  

The material type or distribution format of the resource. (e.g.: hardcover; cassette tape; dvd; etc..)
identifier 
object 
YAn extensible set of name-value pairs of identifiers associated with the resource

 typestring  

identifier type : e.g. ISSN 

valuestring  

identifier value
sourcestring  

a link back to the source record for this metadata
languagestring 
Ythe set of languages used by the resource
rightsstring  

Access rights associated with the resource
versionstring  

This is where the edition can be found in the case of a monograph
lastModifiedstring  

Adminstrative field indicating date at which the resource was added to the Codex.

...

This objects represents two distinct concepts: (1) an Item in the sense of a specific copy of an Instance; (2) a Holding which describes the relationship of the library or institution to the Item. From a data modeling point of view there is so much overlap in the set of metadata needed to describe them both, that it only makes sense to use a single object to represent both concepts together.  The term Item in the rest of this document should be understood to be interchangeable with Item/Holding.

 


Also note that what is discussed in this document is as a “holding” is slightly different from what is known as a holding in the context of a MARC holdings record (MFHD). In this context, a “holding” represents the possession of (or access to) a resource by the library: what is being held.

...

There is however the ability to override these inherited fields at the Item level. On the surface,  this feature doesn’t make much sense when one thinks of a Codex Item and Instance representing a resource described in the Inventory domain. However, it does make more sense when one considers Referential Cataloging. If the master bibliographic description is being maintained in a system external to Folio, such as in a knowledgebase, there is an expectation that corrections and updates will be made in the external system. Since there is no direct control as to when those may be made, the override allows for a temporary update to be applied by the local library directly and immediately. When the changes are eventually made in the remote system, the local overrides can be removed and the fields will revert to their inherited values which reference the master bibliographic record.

Field 
TypeRequiredRepeatableDescription
idstringY 
The internal id of the Item record (UUID)
instanceidstringY 
Link back to the parent Instance
descriptionstring  

Free-form description of the resource
titlestringY 
Inherited from Instance: see above
altTitlestring  

Inherited from Instance: see above
seriesstring  

Inherited from Instance: see above
contributorstring 
YInherited from Instance: see above
publisherstring  

Inherited from Instance: see above
datestring  

Inherited from Instance: see above
typestring  

Inherited from Instance: see above
formatstring  

Inherited from Instance: see above
identifier 
object 
YInherited from Instance: see above 

typestring  

Inherited from Instance: see above 

valuestring  

Inherited from Instance: see above
sourcestring  

Inherited from Instance: see above
languagestring 
YInherited from Instance: see above
rightsstring  

Inherited from Instance: see above
copyNumbernumber  

the "bad old" copy number. Required for backwards compatibilityThe Codex Metadata Model.
barcodestring  

barcode on the Item
vendorPackagestring  

name of vendor package associated with item. (Not to be confused with the Codex Package object.)
coverageobject  

See Coverage object
locationobject 
YSee Location object. There can be multiple locations associated with an Item: e.g. Permanent and Termporary
itemStatusstring  

Item state: e.g. on order
isSelectedboolean  

Holding property. Selection state ("is it held?") of the Item. Mostly relevant for e-resources
isCustomizedboolean  

Administrative flag to indicate that inherited fields have been overwritten

...

The Package represents a container of either Instances and/or Items. As such it provides the ability to group these together for any number of reasons. A given Instance or Item may be placed in any number of Packages since these are ostensibly independent groupings and there are many possible ways to group resources.

 


The Codex Package should not be confused with the more familiar package object found in a typical electronic resource knowledgebase. The latter is a bundling mechanism used by vendors for commercial purposes. The former is a much broader notion which can be used to represent all sorts of groupings. Obviously, the commercial package from a vendor will find itself represented in the Codes as a Package object of a particular type. However, it is only one of many possible types of Packages.

...

FieldTypeRequiredRepeatableDescription
idstringY 
The internal id of the Package record (UUID)
identifierstring  

An external identifier used to track the Package (e.g. a barcode)
namestring  

A name (or label) associated with the Package
descriptionstring  

A free-form description of the Package
typestring  

The type of package - what sort of collection does it represent. (e.g. DVD box set; boundwidth; archival cardboard box; etc..)
vendoridstring  

Link to vendor object associated with this resource (could be in another domain)
vendorstring  

Name of vendor for display purposes
platformstring  

Platform hosting the e-resource.
itemsarrayY 
Array containing Instance or Item objects
itemCountnumber  

Number of items found in the itemsArray
selectedCountnumber  

Number of items in the ItemsArray that are selected ("are held"). Mostly relevant for e-resources
coverageobject  

Coverage object for the package itself, rather than its contents. See Content object
isSelectedboolean  

Selection state ("is it held?") of the package itself, rather than its contents. Mostly relevant for e-resources

...

To support the needs of electronic resources the Location object provides a Platform field and a URI field

Field 
TypeRequiredRepeatableDescription
idstringY 
The internal id of the Location record (UUID)
institutionstring  

Top level administrative organization (e.g. University)
campusstring  

Geographic level (e.g. City)
librarystring  

Building level (e.g. individual libraries)
parkingobject 
YExtensible collection of name value pairs. Can represent common location properties (e.g. cal numbers) or library specific location details (e.g. shelf number or department)

 name   


Name of the parking value (e.g. LCCallNumber or ShelfLocation)

 value   


Value tied to the specific parking name
platformstring  

Delivery platform (for e-resources)
uristring  

URI to access a resource (for e-resources)

...

The Coverage object also provides support for embargoes and a free-form coverage statement.

Field 
TypeRequiredRepeatableDescription
idstringYYThe internal id of the Coverage record (UUID)
rangeobject 
Y

A set of ranges to describe coverage for the resource

  • Begin and End values specify a range
  • End value is optional (i.e. when specifying date singleton)
  • Range can be specified in time (dates) or volume-issue units

 beginstring  

Beginning point in a range 

endstring  

Ending point in a range
statementstring  

A free form text statement to describe coverage for the resource
embargoobject 
YA set of ranges to describe embargo periods for a resource 

beginstring  

Beginning of embargo 

endstring  

End of embargo

Coverage JSON schema.

...