from cromulent.vocab import Painting, add_art_setter, LotNumber, Purchase, Description add_art_setter() acq = Purchase() lot = Aggregation(label="Verrue sale, lot 87") acq2 = Purchase() obj = Painting("http://www.getty.edu/art/collection/objects/882/rembrandt-harmensz-van-rijn-the-abduction-of-europa-dutch-1632/", label="The Abduction of Europa", art=1) est = Actor(label="The estate of Jeanne Baptiste d'Albert de Luynes, comtesse de Verrue") lot.identified_by = LotNumber(value="87") lot.aggregates = obj # Date of Acquisition date = TimeSpan() date.begin_of_the_begin = "1737-03-27T00:00:00Z" date.end_of_the_end = "1737-03-27T23:59:59Z" # Description des = Description(value="1736 - 1737: Estate of Jeanne Baptiste d'Albert de Luynes, comtesse de Verrue, 1670 - 1736 [sold, Verrue sale, Paris, March 27, 1737, lot 87.]") acq.used_specific_object = lot acq.part = acq2 acq2.timespan = date acq2.transferred_title_from = est acq2.transferred_title_of = obj acq2.referred_to_by = des print(factory.toString(acq, compact=False))
def main(): f = open("ref_col.csv", "r") r = csv.reader(f) next(r) #Skip header headers = ["acq_by", "acq_from", "acq_date", "add_names", "avai_data", "cat", "certified", "chem_comp", "CAS", "chem_form", "chem_name", "col_name", "color", "CI", "name", "comp_type", "contact", "email", "experiments", "fire", "formulation", "fbarcode", "geo_org", "grid_loc", "health", "manufacturer", "mass_vol", "mix_pigment", "mix_type", "MSDS", "nat_syn", "notes", "obarcode", "org_date", "other_safe", "part_col", "phone", "phys_form", "prep", "reactivity", "samp_type", "typ_use", "warning", "borrower", "inv_status"] for counter, row in enumerate(r): rec = dict(zip(headers, row)) # Testing first two rows if counter < 2: s = ManMadeObject(label="Sample Object") # Sample Identification/General Information # AccessionNumber is used for now, will a new class Barcode - aat:300343361 s.identified_by = Barcode(label="Full Barcode", value=rec['fbarcode']) s.identified_by = Barcode(label="Old Barcode", value=rec['obarcode']) s.identified_by = Name(label="Common Name", value=rec['name']) s.identified_by = Name(label="Additional Names", value=rec['add_names']) # Sample Type if rec['samp_type']: s.classified_as = instances[rec['samp_type'].lower()] # Typical use if rec['typ_use']: s.as_general_use = instances[rec['typ_use'].lower()] # Physical Form if rec['phys_form']: pf = rec['phys_form'].split() if len(pf) < 4: i = 0 while i <= 2: s.classified_as = instances[pf[i].lower().replace(',', '')] i += 1 break else: s.referred_to_by = Description(label="Sample Type", value=rec['phys_form']) # Color if rec['color']: s.classified_as = instances[rec['color']] # Natural/Synthetic if rec['nat_syn']: s.classified_as = instances[rec['nat_syn'].lower()] elif rec[nat_syn] == "Unknown": s.classified_as = Type(label="Natural/Synthetic", value="Unknown") # Grid Location: lab shelf/storage? loc = Place() if rec['grid_loc']: loc.identified_by = Identifier(label="Grid Location", value=rec['grid_loc']) s.current_location = loc # Index (CI) No., Preparation, Certified Standard # Acquisition Information acq = Acquisition() gci = Department("http://www.getty.edu/conservation/", label="Getty Research Institute") s.changed_ownership_through = acq acq.transferred_title_to = gci # Acquisition Date if rec['acq_date']: acq.timespan = TimeSpan(label=rec['acq_date']) # Acquired by if rec['acq_by']: emp = Actor(label=rec['acq_by']) acq.carried_out_by = emp emp.member_of = gci # Acquired from, debating whether it should be Actor or Group, # so info of person in contact can be linked if rec['acq_from']: acq.transferred_title_from = Actor(label=rec['acq_from']) # Geographic Origin if rec['geo_org']: prod = Production() origin = Place(label="Geographic Origin") origin.identified_by = Name(value=rec['geo_org']) prod.took_place_at = origin s.produced_by = prod # Catalog No. if rec['cat']: s.identified_by = CatalogNumber(label="Catalog No.", value=rec['cat']) # Miscellaneous # Notes if rec['notes']: io = InformationObject(value=rec['notes']) io.classified_as = instances["notes"] print(factory.toString(s, compact=False))
def main(): f = open("ref_col.csv", "r") r = csv.reader(f) next(r) #Skip header headers = [ "acq_by", "acq_from", "acq_date", "add_names", "avai_data", "cat", "certified", "chem_comp", "CAS", "chem_form", "chem_name", "coll_name", "color", "CI", "name", "comp_type", "contact", "email", "experiments", "fire", "formulation", "fbarcode", "geo_org", "grid_loc", "health", "manufacturer", "mass_vol", "mix_pigment", "mix_type", "MSDS", "nat_syn", "notes", "obarcode", "org_date", "other_safe", "part_coll", "phone", "phys_form", "prep", "reactivity", "samp_type", "typ_use", "warning", "borrower", "inv_status" ] for counter, row in enumerate(r): rec = dict(zip(headers, row)) # Testing first two rows if counter < 2: s = ManMadeObject(label=rec['name']) # Sample Identification/General Information s.identified_by = Barcode(label="Full Barcode", value=rec['fbarcode']) s.identified_by = Barcode(label="Old Barcode", value=rec['obarcode']) s.identified_by = PrimaryName(label="Common Name", value=rec['name']) s.identified_by = Name(label="Additional Names", value=rec['add_names']) # Sample Type if rec['samp_type']: try: s.classified_as = instances[rec['samp_type'].lower()] except: s.referred_to_by = Description(label="Sample Type", value=rec['samp_type']) # Typical use if rec['typ_use']: use = rec['typ_use'].split('/') for i in range(len(use)): try: s.as_general_use = instances[use[i].lower().strip()] except: s.referred_to_by = Description(label="Typical Use", value=use[i]) # Physical Form if rec['phys_form']: pf = rec['phys_form'].split() if len(pf) < 4: l = [] for i in range(len(pf)): try: s.classified_as = instances[pf[i].lower().replace( ',', '').strip()] except: l.append(pf[i]) l_join = " ".join(l) s.referred_to_by = Description(label="Physical Form", value=l_join) else: s.referred_to_by = Description(label="Physical Form", value=rec['phys_form']) # Color if rec['color']: try: s.classified_as = instances[rec['color'].lower()] except: s.referred_to_by = Description(label="Color", value=rec['color']) # Index (CI) Color # Natural/Synthetic if rec['nat_syn']: s.classified_as = instances[rec['nat_syn'].lower()] elif rec['nat_syn'] == "Unknown": s.classified_as = Type(label="Natural/Synthetic", value="Unknown") # Preparation : go to Production # Certified Standard # Grid Location: lab shelf/storage? loc = Place() if rec['grid_loc']: loc.identified_by = Identifier(label="Grid Location", value=rec['grid_loc']) s.current_location = loc # Chemical Information # Chemical Formula if rec['chem_form']: s.identified_by = Formula(value=rec['chem_form']) if rec['chem_name']: s.identified_by = Name(label="Chemical Name", value=rec['chem_name']) if rec['CAS']: s.identified_by = Identifier(label="Chemical (CAS) No.", value=rec['CAS']) if rec['comp_type']: comp_type = rec['comp_type'].lower() try: s.classified_as = instances[comp_type] except: s.classified_as = Type(label="Compound Type", value=rec['comp_type']) if rec['mix_type']: mix_type = rec['mix_type'].split('-') for i in mix_type: s.classified_as = instances[i.lower().strip()] # Acquisition Information acq = Acquisition() s.changed_ownership_through = acq acq.transferred_title_to = v.dept['GCI'] # Acquisition Date if rec['acq_date']: adate = rec['acq_date'] tspan = TimeSpan(label=adate) if len(adate) == 4: tspan.begin_of_the_begin = str( parse(adate + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) tspan.end_of_the_end = str( parse(adate + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) elif 'ca.' in adate or 'Spring' in adate: y = adate.split()[1] tspan.begin_of_the_begin = str( parse(y + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) tspan.end_of_the_end = str( parse(y + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) elif '-' in adate: y = adate.split('-') start_year = y[0].strip() end_year = y[1].strip() if len(start_year) == 4: tspan.begin_of_the_begin = str( parse(start_year + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) tspan.end_of_the_end = str( parse(end_year + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) else: tspan.begin_of_the_begin = str( parse(adate, settings={'PREFER_DAY_OF_MONTH': 'first'})) tspan.end_of_the_end = str( parse(adate, settings={'PREFER_DAY_OF_MONTH': 'last'}) + timedelta(days=1)) else: tspan.begin_of_the_begin = str( parse(adate, settings={'PREFER_DAY_OF_MONTH': 'first'})) tspan.end_of_the_end = str( parse(adate, settings={'PREFER_DAY_OF_MONTH': 'last'}) + timedelta(days=1)) acq.timespan = tspan # Acquired by if rec['acq_by']: p = rec['acq_by'].split('-') pname = p[0].split() agent = " ".join(pname) dpt = p[-1] if agent in v.person: emp = v.person[agent] else: emp = Person(label=agent) acq.carried_out_by = emp if dpt in v.dept: emp.member_of = v.dept[dpt] # Part of Collection if rec['part_coll']: s.referred_to_by = LinguisticObject(label='Part of Collection', value=rec['part_coll']) # Acquired from, debating whether it should be Actor or Group, # so info of person in contact can be linked global seller if rec['acq_from']: if rec['acq_from'] in v.sellers: seller = v.sellers[rec['acq_from'].strip()] else: seller = Actor(label=rec['acq_from'].strip()) acq.transferred_title_from = seller # Collection Name if rec['coll_name']: coll = v.collection[rec['coll_name']] s.aggregated_by = coll coll_creation = Creation() coll.created_by = coll_creation coll_creation.carried_out_by = seller # Contact name if rec['contact']: if rec['contact'] in v.contact: contact_name = v.contact[rec['contact'].strip()] else: s.related_entity = contact_name # Email if rec['email']: contact_name.contact_point = EMail(label="E-Mail", value=rec['email']) # Phone number: could be either the number of the contact person, # or of the acquired_from # if rec['phone']: prod = Production() s.produced_by = prod # Preparation if rec['prep']: prep = SamplePreparation(value=rec['prep']) prod.technique = prep if rec['formulation']: prep.referred_to_by = Formulation(value=rec['formulation']) # Geographic Origin if rec['geo_org']: origin = Place(label="Geographic Origin") origin.identified_by = Name(value=rec['geo_org']) prod.took_place_at = origin # Manufacturer if rec['manufacturer']: if rec['manufacturer'] in v.manufacturers: mfr = v.manufacturers[rec['manufacturer']] elif rec['manufacturer'] in v.sellers: mfr = v.sellers[rec['manufacturer']] else: mfr = Group(label=rec['manufacturer']) prod.carried_out_by = mfr # Catalog No. if rec['cat']: s.identified_by = CatalogNumber(label="Catalog No.", value=rec['cat']) # Miscellaneous # Origination Date # if rec['org_date']: # odate = rec['org_date'] # t_span = TimeSpan(label=odate) # if len(adate) == 4: # t_span.begin_of_the_begin = str(parse(odate + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) # t_span.end_of_the_end = str(parse(odate + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) # elif 'ca.' in adate or 'pre' in adate: # y = odate.split()[1] # t_span.begin_of_the_begin = str(parse(y + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) # t_span.end_of_the_end = str(parse(y + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) # elif '-' in adate: # y = odate.split('-') # start_year = y[0].strip() # end_year = y[1].strip() # if len(start_year) == 4: # t_span.begin_of_the_begin = str(parse(start_year + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'})) # t_span.end_of_the_end = str(parse(end_year + 'January', settings={'PREFER_DAY_OF_MONTH': 'first'}) + timedelta(days=365)) # else: # t_span.begin_of_the_begin = str(parse(odate, settings={'PREFER_DAY_OF_MONTH': 'first'})) # t_span.end_of_the_end = str(parse(odate, settings={'PREFER_DAY_OF_MONTH': 'last'}) + timedelta(days=1)) # else: # t_span.begin_of_the_begin = str(parse(odate, settings={'PREFER_DAY_OF_MONTH': 'first'})) # t_span.end_of_the_end = str(parse(odate, settings={'PREFER_DAY_OF_MONTH': 'last'}) + timedelta(days=1)) # acq.timespan = t_span # Mass or Volume if rec['mass_vol']: mv = rec['mass_vol'].replace('appx.', '').replace('approx.', '').split() if len(mv) == 2: dim = MassVolume(value=mv[0]) s.dimension = dim dim.unit = instances[mv[1].replace('.', '')] else: try: u = instances[(mv[1] + " " + mv[2]).replace('.', '')] dim = MassVolume(value=mv[0]) s.dimension = dim dim.unit = u except: s.referred_to_by = DimensionStatement( label="Mass or Volume", value=rec['mass_vol']) # Experiments on Sample if rec['experiments']: s.referred_to_by = Description(label="Experiments on Sample", value=rec['experiments']) # Notes if rec['notes']: s.referred_to_by = Notes(value=rec['notes']) # Available Data # MSDS & Safety # Safety: classified_as or referred_to_by properties if rec['fire']: s.classified_as = FireSafety(value=rec['fire']) if rec['health']: health_safe = Safety(label="Health Safety", value=rec['health']) s.classified_as = health_safe health_safe.classified_as = instances['health'] if rec['reactivity']: react_safe = Safety(label="Reactivity Safety", value=rec['reactivity']) s.classified_as = react_safe react_safe.classified_as = instances['reactivity'] if rec['other_safe']: other_safe = Safety(label="Other Safety", value=rec['other_safe']) s.classified_as = other_safe other_safe.classified_as = instances['other'] print(factory.toString(s, compact=False))
tod.begin_of_the_begin = "1652-01-01" tod.end_of_the_end = "1652-12-31" pod = Place(label="Amsterdam") pod.part_of = Place(label="The Netherlands") death.timespan = tod death.took_place_at = pod p.brought_into_existence_by = birth p.taken_out_of_existence_by = death # Date of Acquisition date = TimeSpan() date.begin_of_the_begin = "1632-01-01T00:00:00Z" date.end_of_the_end = "1652-12-31T23:59:59Z" # Description and Source des = Description(value="- 1652: Jacques Specx, 1585 - 1652 (Amsterdam, The Netherlands)") src = LinguisticObject(label="Source", value="In death inv. of 1652") acq.transferred_title_of = obj acq.timespan = date acq.transferred_title_to = p acq.referred_to_by = des acq.referred_to_by = src print(factory.toString(acq, compact=False))
mu = MuseumPlace(label="Museum East Pavillion") place = Place(label="The Getty Center") loc.part_of = mu mu.part_of = place obj.current_location = loc # Signature sign = Signature(label="RHL [in ligature]. van Rÿn.1632") bpart = BottomPart(label="Lower Right") bpart.carries = sign obj.part = bpart # Description des = Description( label="Description", value= "In the Metamorphoses, the ancient Roman poet Ovid told a story about the god Jupiter, who disguised himself as a white bull in order to seduce the princess Europa away from her companions and carry her across the sea to the distant land that would bear her name.\nDuring his long career Rembrandt rarely painted mythological subjects. Here he conveys a narrative story through dramatic gesture and visual effects. Bewildered, Europa grasps the bull's horn, digs her fingers into his neck, and turns back to look at her companions on the water's edge. One young woman falls to the ground and raises her arms in alarm, dropping the flower garland intended for the bull's neck into her lap, while her friend clasps her hands in consternation and watches helplessly. The carriage driver above rises to his feet and stares at the departing princess in horror. In the background, a city shrouded in mist extends along the horizon, perhaps serving as an allusion to the ancient city of Tyre as well as to contemporary Amsterdam.The dark thicket of trees to the right contrasts with the pink and blue regions of the sea and sky. Sunlight breaks through the clouds and reflects off the water, but the sky behind the trees is dark and foreboding.\nA master of visual effects, Rembrandt took pleasure in describing the varied textures of sumptuous costumes and glittering gold highlights on the carriage and dresses." ) obj.referred_to_by = des # IIIF digital image dimg = InformationObject( "http://media.getty.edu/viewers/mirador/?manifest=https://data.getty.edu/museum/api/iiif/882/manifest.json" ) io = InformationObject("http://iiif.io/api/presentation") dimg.conforms_to = io dimg.format = "application/ld+json;profile=\"http://iiif.io/api/presentation/2/context.json\"" rights = RightsStatement( "http://www.getty.edu/about/whatwedo/opencontent.html", label="Open Content Program", value="This image is available for download, without charge.")
tod = TimeSpan(label="1736") tod.begin_of_the_begin = "1736-01-01T00:00:00Z" tod.end_of_the_end = "1736-12-31T23:59:59Z" pod = Place(label="Savoy") pod.part_of = Place(label="France") death.timespan = tod death.took_place_at = pod p.brought_into_existence_by = birth p.taken_out_of_existence_by = death # Estate est = Actor(label="The estate of Jeanne Baptiste d'Albert de Luynes, comtesse de Verrue") # Date of Acquisition date = TimeSpan() date.begin_of_the_begin = "1736-01-01T00:00:00Z" date.end_of_the_end = "1736-12-31T23:59:59Z" # Description des = Description(value="- 1736: Jeanne Baptiste d'Albert de Luynes, comtesse de Verrue, 1670 - 1736 (Paris, France; Savoy, France), upon her death, held in trust by the estate.") acq.transferred_title_of = obj acq.timespan = date acq.transferred_title_from = p acq.transferred_title_to = est acq.referred_to_by = des print(factory.toString(acq, compact=False))