from cromulent.model import factory, Place, TimeSpan, Aggregation from cromulent.vocab import Painting, add_art_setter, ExhibitionIdea, MultiExhibition, \ Exhibition, Name, MuseumPlace add_art_setter() i = ExhibitionIdea(label="The Age of Rembrandt") 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) e = MultiExhibition(label="The Age of Rembrandt") d = TimeSpan(label="1966-1967") d.begin_of_the_begin = "1966-10-10T00:00:00Z" d.end_of_the_end = "1967-03-05T23:59:59Z" e.timespan = d e1 = Exhibition(label="Exhibition at first location") c1 = Aggregation() l1 = MuseumPlace(label="The Fine Arts Museums of San Francisco") e1.took_place_at = l1 l1.part_of = Place(label="San Francisco") d1 = TimeSpan(label="1966") d1.begin_of_the_begin = "1966-10-10T00:00:00Z" d1.end_of_the_end = "1966-11-13T23:59:59Z" e1.timespan = d1 c1.aggregates = obj e1.used_specific_object = c1 e2 = Exhibition(label="Exhibition at second location")
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", "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))
# p = Person("https://linked.art/example/person/35", "Copyist") # prod.produced = copy # prod.influenced_by = org # prod.carried_out_by = p # print(factory.toString(prod, compact=False)) # from cromulent.model import factory, Production, VisualItem # from cromulent.vocab import Negative # prod = Production("https://linked.art/example/activity/72", "Printing of Photograph") # src = Negative("https://linked.art/example/object/89", "Negative") # vi = VisualItem("https://linked.art/example/VisualItem/6", "Visual Content of Photographs and Negative") # prod.used_specific_object = src # src.shows = vi # print(factory.toString(prod, compact=False)) # Example of Destructiom from cromulent.model import factory, Destruction, TimeSpan from cromulent.vocab import Painting, add_art_setter add_art_setter() prod = Destruction("https://linked.art/example/activity/80") obj = Painting("https://linked.art/example/object/94", "Example Destroyed Painting", art=1) tspan = TimeSpan("https://linked.art/example/time/22") prod.timespan = tspan tspan.begin_of_the_begin = "1823-03-01T00:00:00Z" tspan.end_of_the_end = "1823-03-31T00:00:00Z" prod.destroyed = obj print(factory.toString(prod, compact=False))
from cromulent.model import factory, TimeSpan, Acquisition, Person, \ BeginningOfExistence, EndOfExistence, Place, LinguisticObject from cromulent.vocab import Painting, add_art_setter, Description add_art_setter() acq = Acquisition() 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) # Info of acquirer p = Person(label="Jacques Specx") birth = BeginningOfExistence(label="Birth") tob = TimeSpan(label="1585") tob.begin_of_the_begin = "1585-01-01" tob.end_of_the_end = "1585-12-31" pob = Place(label="Amsterdam") pob.part_of = Place(label="The Netherlands") birth.timespan = tob birth.took_place_at = pob death = EndOfExistence(label="Death") tod = TimeSpan(label="1652") 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
# Collection col = CollectionSet("http://www.getty.edu/art/collection/", label="The J. Paul Getty Museum Collection") obj.aggregated_by = col # Artist info artist = Actor( "http://www.getty.edu/art/collection/artists/469/rembrandt-harmensz-van-rijn-dutch-1606-1669/", label="Artist") artist.identified_by = PrimaryName(value="Rembrandt Harmensz. van Rijn") artist.classified_as = instances["dutch nationality"] birth = BeginningOfExistence() btime = TimeSpan(label="1606") btime.begin_of_the_begin = "1606-01-01T00:00:00Z" btime.end_of_the_end = "1607-01-01T00:00:00Z" birth.timespan = btime death = EndOfExistence() dtime = TimeSpan(label="1669") dtime.begin_of_the_begin = "1669-01-01T00:00:00Z" dtime.end_of_the_end = "1670-01-01T00:00:00Z" death.timespan = dtime artist.brought_into_existence_by = birth artist.taken_out_of_existence_by = death prod.carried_out_by = artist # Culture vitem = VisualItem() vitem.style = instances["dutch nationality"] obj.shows = vitem
from cromulent.model import factory, TimeSpan, Acquisition, Person, Actor, \ BeginningOfExistence, EndOfExistence, Place from cromulent.vocab import Painting, add_art_setter, Description add_art_setter() acq = Acquisition(label="Held in trust by the estate") 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) # Info of acquirer p = Person(label="Jeanne Baptiste d'Albert de Luynes, comtesse de Verrue") birth = BeginningOfExistence(label="Birth") tob = TimeSpan(label="1670") tob.begin_of_the_begin = "1670-01-01T00:00:00Z" tob.end_of_the_end = "1670-12-31T23:59:59" pob = Place(label="Paris") pob.part_of = Place(label="France") birth.timespan = tob birth.took_place_at = pob death = EndOfExistence(label="Death") 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