Skip to content

Getting Started

Matt Miller edited this page Jun 25, 2025 · 2 revisions

Marva is an Bibframe RDF/XML editor used at the Library of Congress. While it is primarily intended to be used at LC it can be used to edit arbitrary BF records.

Getting the tool and running locally with Node v23+

git clone https://github.com/lcnetdev/marva-quartz.git
cd marva-quartz
npm install
npm run dev-external

This will run the client locally at http://localhost:4444/bfe2/quartz/

It will be configured to used specific endpoints that work publicly

To load data you enter a URL in the load screen. You can use any Instance on id.loc.gov

For example https://id.loc.gov/resources/instances/2143880.cbd.rdf

image

Clicking the Monograph button will load that data into the Monograph profile.

( you can also search by LCCN in that field, but that is an example of Marva built to support LC cataloging, of course the search behavior can be customized if you know what to edit )

Profiles are JSON definitions that direct how to group BF properties together into blank nodes and provides metadata about lookups to use for different types of fields. Unless you have experience with modifying profiles it is probably easiest to just use the LC profiles when getting started (this are defined in the config setup so it is easy to point Marva to use other profile definition)

Data Format

The Work/Instance data package sent to the editor need to be in the specific format that aligns with the profiles, which themselves align with the LC BF Ontology updates, the MARC-2-BF and BF-2-MARC conversions.

Save vs Post

In Marva you can "Save" a record, this stores the XML of the edited record in the back-end. When you "Post" you are sending the final version of the record to a server to do something with it. At LC when we post we are saving the record into id.loc.gov. This functionality is configured in the publish endpoint in theconfig file

Back-End Requirements

The marva-quartz repo contains the Vue3 front-end code of the editor. This client can accept incoming XML packages, render them in a defined profile and export/post the modified version. It does however have some functionality that is dependent on a back-end system running it. Here is a list of incomplete features and requirements.

Feature Notes
Load BF Work/Instance package Requires hosted BF Editor profiles, public LC profiles available/hosted at GitHub .
Edit BF Work/Instance package
"Save" in progress work Requires back-end system
"Post" edited Work/Instance package Can send XML package to endpoint, you need to provide the endpoint back-end
Preview of BF-to-MARC conversion Requires back-end system
Scriptshifter Transliteration integration Requires back-end system (open service hosted by LC)
Lookup Resources in the id.loc.gov ecosystem (Names/Subjects/Vocabulary Terms)
Be configured to use external authorities Requires back-end system
Publish name authorities Requires back-end system
Copy Cataloging Requires back-end system + OCLC API keys
Shelf Listing Requires back-end system
Validation Requires back-end system

We use a very barebones Node Express server to provide these back-end services but you would likely want to modify how it works or provide a different platform or service: https://github.com/lcnetdev/marva-backend

Clone this wiki locally