HAVRC Data Migration ETL Work
This page contains information about data migration ETL work for HAVRC's deployment of CollectionSpace
HAVRC Authorities
Migration of HAVRC legacy data is dependent upon the ability to create and deploy a number of authority files within the CollectionSpace environment. Nearly every table in the current HAVRC system is dependent on data from one or more of these authorities. All authorities must be able to create both hierarchical and associative relationships between records in the same authority. Both preferred and non-preferred terms should be searchable and display in predictive text handling lists (see /wiki/spaces/collectionspace/pages/666274159 ) Once these basic authority structures have been developed and instances are available for use, the first step in the data migration process should be the migration of existing authority data into these structures. Since many of the values that populate the HAVRC authorities (such as personal and corporate Names, Place names, Work types, Styles, Periods, Materials and Techniques, etc.) were derived from the licensed Getty vocabularies (http://www.getty.edu/research/tools/vocabularies/index.html), an ideal situation going forward would be the ability to access the online version of these thesauri from within the CSapce application via Web services (see http://www.getty.edu/research/tools/vocabularies/obtain/download.html) for both searching and data retrieval. This would eliminate the need to maintain the entire thesaurus structure within the application and take the advantage of continuing product development by the Getty.
HAVRC Names
The HAVRC Names table currently contains 7289 names. Each name is typed with one of 19 name types. HAVRC alt_name currently contains 75 records representing alternate names, also typed, that are linked to records in the names table. Both name and alt_name records will map to the person and organization authority. Donor names, staff names, and patron names exist in the donor, staff and patron tables and should be mapped into the CSpace Name Authority, preferably as separate vocabularies from artist names. Donor and staff names will have to be parsed into first and last names.
Major Issues
- HAVRC Names table combines Name and role in one record, resulting in multiple records for the same artist name with different roles associated (e.g. Rubens as painter, designer, architect, sculptor, printmaker, etc.) Multiples need to be identified so that the name may be migrated once, with all associated roles mapped as multiple values in the repeatable Occupation field.
Customizations required:
- Name block needs to be a repeating group to allow for the inclusion of alternate names. (fixed in Ver. 2.4)
- Additional fields needed for repeating data source block for name data source and source_id (ULAN id, LCNAF id, etc.). (fixed in Ver. 2.4)
- Source names should ultimately be derived from the Brief Citation field of the Citation Authority.
- CSpace birth date and death date fields need to be structured dates rather than calendar dates.
- Additional (structured) date fields needed to record activity dates. Best approach would be a repeating activity dates group with earliest_active, latest active, and activity place. (See wireframe attached to JIRA CSPACE-4996)
- Additional Qualifier field needed in Production Person Group in the Catalog record to hold "School of", "Circle of", "Follower of", etc.
- May need a local field to hold HAVRC name_ids to aid migration?
HAVRC Table Name |
HAVRC Field Name |
HAVRC Name Type |
CSpace Field Name |
Notes |
---|---|---|---|---|
xdb_names_qv |
preferred_name |
personal |
Display name |
Preferred names with qualifiers included such as "(File with)", "(After)", or "(Attr)" need to be isolated. These records should map the name, qualifier, and role to the catalog record of the work they are linked to as a production person (e.g. Production Person = "Rubens, Peter Paul", Production Role = "painter" Qualifier = "After" |
|
last_name |
personal |
Surname |
|
|
middle_name |
personal |
Middle name |
|
|
name_type_description |
|
|
Determines whether the data from this record goes into the Person or Organization Authority (see name types mapping document) |
|
name_abbrev |
personal |
|
This field was used to save real estate on slide labels. While no longer needed, some data cleanup is required here. Some of the values in this field are alternate names |
|
qualifier |
personal |
Addition to name |
Data cleanup required here. Many of these values (Circle of, follower of, workshop of) denote unnamed individuals whose work displays affinities with those of the named artist. |
|
honorific |
personal |
Title |
This field currently contains 26 unique values and needs some cleanup |
|
ulan_id |
|
|
New field needed for names derived from ULAN. Could be part of a source + source_detail group (Source="ULAN" and Source_detail="500002921") |
|
call_num_cd |
|
|
Call number code associated with analog collection. Recommend keeping this is a local field for now. May be useful for sorting all the attributeds, circle of, school of names. Perhaps a local field could be added to the person and org authorities to hold this legacy data if pre-migration data cleanup is not possible. |
|
birth_date |
personal |
Birth Date |
|
|
death_date |
personal |
Death Date |
|
|
first_active_date |
personal |
|
New field group needed here made up of structured date + place name |
|
last_active_date |
personal |
|
|
|
source_abbrev |
personal/organization |
|
Need new source and source detail group here (See ulan_id above) (fixed in Ver. 2.4) |
|
notes |
personal |
Name notes |
|
|
culture_name |
personal |
Nationality |
|
|
lang_name |
personal/organization |
|
Need new field to record language of the name (Fixed in Ver. 2.4) |
xdb_name_role_cv |
name_role |
|
Occupations |
|
sql for xdb_names_qv
create view xdb_names_qv ( name_id, last_name, first_name, middle_name, name_type_id, name_type_descr, name_abbrev, birth_date, early_birth_date, late_birth_date, death_date, early_death_date, late_death_date, cat_term_id, catalog_term, call_num_cd, first_active_date, early_first_active, late_first_active, last_active_date, early_last_active, late_last_active, gender, culture_id, culture_name, complete_flag, source_id, source_type, source_abbrev, lang_id, lang_name, honorific, qualifier, ulan_id, header_id, header_text, header_descr, name_notes, archive_call_num, preferred_name, last_chng_staff_id, last_chng_staff_login, last_chng_date ) as select t1.name_id, t1.last_name, t1.first_name, t1.middle_name, t2.name_type_id, t2.name_type_descr, t1.name_abbrev, t1.birth_date, t1.early_birth_date, t1.late_birth_date, t1.death_date, t1.early_death_date, t1.late_death_date, t6.cat_term_id, t6.catalog_term, t1.call_num_cd, t1.first_active_date, t1.early_first_active, t1.late_first_active, t1.last_active_date, t1.early_last_active, t1.late_last_acti t1.gender, t3.culture_id, t3.culture_name, t1.complete_flag, t4.source_id, t4.source_type, t4.source_abbrev, t5.lang_id, t5.lang_name, t1.honorific, t1.qualifier, t1.ulan_id, t7.header_id, t7.header_text, t7.header_descr, t1.name_notes, t1.archive_call_num, t1.preferred_name, t1.last_chng_staff_id, t9.staff_login, t1.last_chng_date from names t1, name_type t2, culture t3, source t4, language t5, mip_common..cataloging_terms t6, header t7, staff t9 where t1.name_type_id = t2.name_type_id and t1.culture_id = t3.culture_id and t1.source_id = t4.source_id and t1.lang_id = t5.lang_id and t1.cat_term_id = t6.cat_term_id and t1.header_id = t7.header_id and t1.last_chng_staff_id = t9.staff_id
sql for xdb_name_role_cv
create view xdb_name_role_cv ( name_id, name_role ) as select t1.name_id, t1.first_name + substring(' ', isnull(sign(ascii(t1.first_name)),0), 1) + t1.middle_name + substring(' ', isnull(sign(ascii(t1.middle_name)),0), 1) + t1.last_name + ', ' + t1.qualifier + substring(', ', isnull(sign(ascii(t1.qualifier)),0), 2) + t2.catalog_term from names t1, mip_common..cataloging_terms t2 where t1.cat_term_id = t2.cat_term_id
HAVRC Place Names
Place names in HAVRC are largely derived from the Getty Thesaurus of Geographic Names (TGN) and are stored in the Locations table and in several views (www_locations, xdb_loc_qvnc, xdb_loc_acv, xdb_loc_qvoj). Unlike the AAT and ULAN vocabularies (which was loaded into Sybase tables and made available within the HAVRC application), the values derived from the TGN are cut and pasted by cataloging staff from the public website maintained by the Getty Vocabulary Program (http://www.getty.edu/research/tools/vocabularies/tgn/) into the Locations table. Hierarchical relations are created one by one by cataloging staff. Because all the Getty vocabularies are continually growing and changing, and data input errors are inevitable, some of this place name data may be incorrect or out of date. Unlike the AAT and ULAN data, the TGN data has never been refreshed or updated annually from Getty-provided materials. Therefore, it may be advisable to run a verification check against the most current TGN data to identify and correct data errors before importing into CSpace.
A certain amount of data massage may be necessary on import to create consistent qualified names and display names out of HAVRC legacy data. For example, homonyms could have qualified names that include the parent name appended in parentheses, e.g. "Cambridge (Massachusetts)" vs "Cambridge (England)". Display names should have the qualified name plus name type, e.g. "Cambridge (Massachusetts, inhabited place)". Display Names for place names that have no homonyms and no qualifiers could be comprised of place name + place name type, e.g. "India (nation)". The place name qualifiers are necessary for disambiguation when place names are presented in a term completion picklist with no other information. The display names are likely to get long and unwieldy unless abbreviations are used for the parent terms, e.g. "Cambridge (MA, inhabited place)", but these abbreviations have not been entered consistently and many would have to be added or created on export.
Data Cleanup Needed
- Isolation of HAVRC location terms that already include the qualifier in the location term string (e.g. "Castello (sestiere)" ) from those that include alternate names (e.g. "Abu Sunbul (Abu Simbel)"). Currently there are 205 place name records that include something in parentheses following the place name.
- Parsing of HAVRC location terms that include alternate place names in the string, e.g. "Abu Sunbul (Abu Simbel)" to create a preferred name and an alternate name.
HAVRC Table Name |
HAVRC Field Name |
CSpace Information Group |
CSpace Field Name |
Notes |
---|---|---|---|---|
Locations |
loc_id |
Name Authority Body |
Identifier |
|
www_locations |
loc_term + loc_type_descr |
Place names |
Qualified name |
loc_term + "(" + loc_type_descr + ")" - Example Cambridge (Massachusetts) |
www_locations |
loc_term + loc_type_descr |
Name Authority Body |
Display_name |
Display name should be comprised of Qualified name + name type. Some place names have alternate names (enclosed in parentheses) included in the loc_term field. These need to be parsed and the primary place name entered into the preferred name field and alternate place name entered into a repeating non-preferred name element. |
www_locations |
|
Place names |
Name |
Place names without alternate names or qualifiers |
www_locations |
loc_type_descr |
Place names |
Name type |
|
Locations |
loc_abbrev |
Place names |
Place Name Abbreviation |
Not all location have abbreviations |
Locations |
term_type |
Place names |
Status |
Controlled list (c=Current, h=Historical, b=Both) |
xdb_loc_qvnc |
parent_term |
Hierarchy |
Broader Context |
Hierarchy links made after all location terms have been migrated |
Location |
latitude |
Locality Information, Georeference Information |
Verbatim latitude, Decimal latitude |
|
Location |
longitude |
Locality Information, |
Verbatim longitude, Decimal longitude |
|
Location |
source_abbrev |
Place Authority body, Place names |
Source, Source |
(In repeating term block in Ver. 2.4) |
|
tgn_id |
Place names |
Source ref_id |
Only for records with TGN in source_abbrev (In repeating term block in Ver. 2.4) |
|
loc_notes |
Place Authority body |
Note |
|
|
child_term |
Hierarchy |
Narrower context |
|
|
|
|
Coordinate system |
All records should have "Latitude and Longitude" value |
Location |
Latitude + longitude |
Locality information |
Verbatim coordinates |
Concatenate latitude +" X " + longitude |
sql for xdb_loc_qvnc
create view xdb_loc_qvnc ( loc_id, loc_term, loc_type_id, loc_type_descr, loc_abbrev, loc_hier, parent_id, parent_term, par_loc_type_id, par_loc_type, term_type, latitude, longitude, source_id, source_type, source_abbrev, tgn_id, staff_id, staff_login, date_entered, last_chng_staff_id, last_chng_staff_login, last_chng_date, loc_notes, child_term, child_id ) as select t1.loc_id, t1.loc_term, t2.loc_type_id, t2.loc_type_descr, t1.loc_abbrev, t1.loc_hier, t1.parent_id, t3.loc_term, t5.loc_type_id, t5.loc_type_descr, t1.term_type, t1.latitude, t1.longitude, t4.source_id, t4.source_type, t1.tgn_id, t4.source_abbrev, t1.staff_id, t7.staff_login, t1.date_entered, t1.last_chng_staff_id, t6.staff_login, t1.last_chng_date, t1.loc_notes,'', 0 from location t1, loc_type t2, location t3, source t4, loc_type t5, staff t6, staff t7 where t3.loc_id = t1.parent_id and t2.loc_type_id = t1.loc_type_id and t4.source_id = t1.sou rce_id and t3.loc_type_id = t5.loc_type_id and t1.staff_id = t7.staff_id and t1.last_chng_staff_id = t6.staff_id
Citations
Because the HAVRC collection consists of images of objects, rather than the objects themselves, it is important for HAVRC staff to document the sources from which data about the object(s) depicted in the images are derived. Data is gathered from a variety of (primarily) secondary sources, and nearly every table in the HAVRC application has two fields to reference these sources--Source abbreviation and source type. While most cited sources are print publications (books, journals, exhibition catalogs and ephemera), data is also gathered from a variety of other sources, including websites, documentation provided by image vendors, information found on analog slide and photo labels, faculty input (oral history), etc. Details about HAVRC sources are recorded in one of 7 source type tables: Books, Journals, Vendor Images, Donors/Duplicates, Electronic, Exhibition, and Other Sources. Each table has a different field structure to hold data relevant to that source type. Data in these tables will all map to a common structure in the CSpace Citations Authority. The only field they all share in common is a field called source_abbreviation. It is this source_abbreviation field + the source type that links the information about the source to the data recorded in other tables.
Initial migration might simply map the source_abbreviation and source_id into the Brief Citation and Local Source Id fields in the Citation Authority, with the rest to follow based on the source_id. Full citations are created for the nightly snapshot of data for the HAVRC website and may be migrated from www_source_citations to the CollectionSpace Source Full Citation field for all legacy sources. Once the legacy source data is migrated, these full citations will have to be either entered by hand, or copied and pasted from a citation string generated from an online service such as WorldCat or Refworks for all new citation authority records. Data in the 7 source type tables should be mapped as follows to the UCB Proposed Citations Authority Schema.
Customizations needed:
- Additional field to hold legacy source_id to aid migration?
-
HAVRC Table Name
HAVRC Field Name
CSpace Information Group
CSpace Field Name
Notes
Source
Citation Autuhority
source_abbrev
Citation Information
Brief Citation
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
source_type
Citation Information
Source Type
b=book, j=journal, v=vendor, d=donor/duplicate, m=electronic media, e=exhibition, o=other. Note: other suggested source types are more granular but these values will speed the initial data migration.
www_source_citations
cite
Citation Information
Source Full Citation
The cite field in this table contains a fully formatted citation for each accession (including page and plate numbers). SQL code used to populate this field for the website data (format_cdwa_source?) could be edited to populate this field with legacy data (i.e. edit the part of the code that adds page and plate numbers and put that page&plate number data in the source detail field of the media handling record for that accession. Full citation for new citation records added post-migration will have to be constructed manually for this field or generated and pasted from an external application such as Refworks.
Book
Citation Authority
For all those source records where source_type=b
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
author
Person/Org Authority
Display Name
Many HAVRC book records contain multiple authors in the author field. This data will need to be parsed and imported as separate names and entered into the Person Authority, or separated manually post-migration.
book_title
Title and Issue Information
Source Title
447 HAVRC book titles contain subtitle or section title info. Data will either need to be parsed and imported separately, or done so manually post-migration.
series_title
Title and Issue Information
Source Title
Create new Citation record for the series title with Source Type="Series". Link as broader context in Hierarchical Relationships to record where series title appears in HAVRC series_title field.
edition
Title and Issue Information
Source Edition
publish_location
Publisher Information
Source Publication Place
publisher_name
Publisher Information
Source Publisher
publish_year
Title and Issue Information
Source Publication Year
book_call_num
Resource Identifiers
Source Other Identifier
Map with "Call number" in Source Other Identifier Type
book_volume
Title and Issue Information
Source Volume
book_abbrev
From Source table (see above)?
book_comments
Publisher Information
Remarks
ISBN
Resource Identifers
Source Other Identifier
Map with "ISBN" in Source Other Identifier Type
date_entered
Citation Information
Source Data Capture Date
Journal
Citation Authority
For all those source records where source_type=j
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
journal_title
Title and Issue Information
Source Title
journal_volume
Title and Issue Information
Source Volume
journal_issue
Title and Issue Information
Source Issue
journal_year
Title and Issue Information
Source Publication Year
journal_month
Title and Issue Information
No real place for this in new schema unless added to Source Issue. Example: For Art Bulletin volume LXV issue 3, published in September of 1983: in Source Issue put "3 (SEP)"
journal_abbrev
Citation Information
Brief Citation
ISSN
Resource Identifers
Source Other Identifier
Map with "ISSN" in Source Other Identifier Type
journal_call_num
Resource Identifiers
Source Other Identifier
Map with "Local Call Number" in Source Other Identifier Type
journal_comment
Publisher Information
Source Remarks
date_entered
Citation Information
Source Data Capture Date
Vendor Images
Citation Authority
For all those source records where source_type=v. Vendor images purchased both individually and in sets. Data from Vendor table maps to Org Authority. Data from vendor_set (or xdb_vendor_set_qv) to Citation Authority
xdb_vendor_set_qv
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
vendor_name
Publisher Information
Source Publisher
Vendor name maps to either Person or Org Authority. Will need custom map for legacy data
vendor_set_abbrev
Citation Information
Brief Citation
If set_flag is "No" map only vendor_order_abbrev to Brief Citation.
vendor_item_id
Title and Issue Information
Source Title
If set_flag is "yes" map vendor_item_id to Title and Issue Information - Source Title
set_comments
Publisher Information
Source Remarks
set_flag
Citation Information
Vendor Set (local boolean field?)
Determines whether the citation refers to an individual image or a set of images. Use for migration of legacy data only or put in custom local field "Vendor Set"
date_entered
Citation Information
Source Data Capture Date
Donors/Duplicates
Citation authority
For all those source records where source_type=d. Most donor names map to Person Authority, a few to Org Authority. Need to cull duplicate names entered with different donation types (e.g. same name entered as source for donated slide, duplicate slide, and oral history, etc.)
donor
source_id
Citation Information
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
Local Source Id (Custom field)
donor_name
Person Authority
Person Display Name; Forename; Surname
Person and Org names will need to be separated manually. After dups are culled, map donor_name to Person displayName, parse last name and first name at comma and place in Forename and Surname fields of Person Authority. For orgs, map donor_name to Organization displayName
date_entered
Citation Information
Source Data Capture Date
xdb_donor_qv
credit_line
Media Handling
Copyright Statement
Any data in credit line maps to media handling records for the accessions that point to this source_id as image source.
copyright_owner
Media Handling
Rights Holder
If copyright_owner=1 ("yes") then map name to Rights Holder field of Media Handling record for each accession linked to this source_id as image source.
donor_comments
Publisher Information
Source Remarks
Electronic Resources
Citation Authority
For all those source records where source_type="m"
xdb_electronic_media_qv
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
electronic_media_abbrev
Citation Information
Source Brief Citation
electronic_media_title
Title and Issue Information
Source Title
publisher_name
Publisher Information
Source publisher
publish_location
Publisher Information
Source Publication Place
publish_year
Title and Issue Information
Source Publication Year
url
Resource identifiers
Source Other identifier
medium
Citation Information
Source type
data_format
add to comments?
series_title
no data
media_count
only 1 record contains a value - add to comments
media_call_num
no data
system_requirements
add to comments?
media_size
no data
electronic_media_comments
Citation Information
Source Remarks
date_entered
Citation Information
Source Data Capture Date
Exhibition
Citation Authority
For all those source records where source_type=e. Most data in this table will map to Exhibition Authority
www_source_citations
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
xdb_exhibit_qv
exhibit_abbrev
Citation Information
Source Brief Citation
xdb_exhibit_qv
exhibit_title
Citation Information
Source Title
xdb_exhibit_qv
exhibit_item_type
Citation Information
Source Type
date_entered
Citation Information
Source Data Capture Date
Other Sources
Citation Authority
For all those source records where source_type=o
other_sources
source_id
Citation Information
Local Source Id (Custom field)
Either create a custom field or map to Other Resources-> Source Other Identifier with a Source Other Identifier type="legacy_source_id"
other_abbrev
Citation Information
Source Brief Citation
other_descr
Citation Information
Source Remarks
xdb_other_sources_qv
pre_seurat_order_num
Resource Identifiers
Source Other Identifier
format_descr
Resource identifiers
Source Other Identifier Type
date_entered
Resource Identifier
Source Identifier Capture Date
Cultures
Materials
Processes and Techniques
Styles and Periods
Subjects
HAVRC Orders Data Mapping to CSpace Intake
HAVRC Works Data Mapping to CSpace Cataloging
Simple vs Complex Works
Works of art that consist of a single object are expressed in HAVRC as a single record in the works table, to which one or more names, dates, places, materials, techniques, subjects, and accession records may be linked via the work_id created by the system when a new work record is created. Works of art that consist of one or more component parts are expressed in HAVRC by links between the works and work_component tables. A sequential component_id is created by the system whenever a component record is saved and linked to the parent work via the work_id recorded in the work_component table. True component works cannot be completely understood without inheriting data from the parent work and this is what distinguishes these part-whole relationships from other associative relationships. For these more complex works, one or more names, dates, places, materials, techniques, subjects and accessions may be linked to each component work as well as to the parent work.
There are currently 1082 work records that have a sum total of 4058 linked component records. Until CollectionSpace has implemented the ability to create relationships between collection objects, HAVRC will need to employ a workaround to capture the relationships between parent works and their component parts as PAHMA has done (see PAHMA Collection Objects Data Mapping - Object-Object Relationships). Additional local fields will likely be needed in order to prevent data loss and/or corruption during the initial migration and additional functionality will be needed going forward to preserve and enable data inheritance between works and their components.
HAVRC Accessions Data Mapping to CSpace Media Handling