def main(): g = Graph() create_status_uri(g) create_bestuursfuncie_ere(g) create_bestuursorgaan_ere(g) create_type_ere(g) create_type_helft(g) create_change_event_ere(g) create_type_involvement_ere(g) bedinaar_criterion_ere(g) document_type_criterion(g) rol_bedinaar_functies(g) financering_bedinaar_functies(g) vestiging_types(g) export_data(g, 'codelist-ere') g.serialize('input/codelists/codelist-ere.ttl',format='turtle')
def main(file): vocabulary_raw = pd.read_excel(file) g = Graph() for _, row in vocabulary_raw.dropna(subset=['Uri']).iterrows(): s = URIRef(row['Uri']) g.add((s, RDF.type, URIRef(ns.owl+str(row['Ontology type'])))) g.add((s, RDFS.label, Literal(row['label'], lang='nl'))) if pd.notna(row['comment']): g.add((s, RDFS.comment, Literal(row['comment'].strip(), lang='nl'))) export_data(g, f'vocab')
def main(): g = Graph() results = get_all_locations() for result in results: location_id = URIRef(result['loc']['value']) g.add((location_id, RDF.type, ns.prov.Location)) add_literal(g, location_id, ns.mu.uuid, result['uuid']['value'], XSD.string) add_literal(g, location_id, RDFS.label, result['label']['value'], XSD.string) add_literal(g, location_id, ns.ext.werkingsgebiedNiveau, result['level']['value'], XSD.string) export_data(g, 'locations') g.serialize('input/codelists/locations.ttl', format='turtle')
def main(): g = Graph() results = get_all_admin_units() for result in results: admin_unit_id = URIRef(result['admin_unit']['value']) g.add((admin_unit_id, RDF.type, ns.besluit.Bestuurseenheid)) add_literal(g, admin_unit_id, ns.mu.uuid, result['uuid']['value'], XSD.string) add_literal(g, admin_unit_id, RDFS.label, result['admin_unit_label']['value'], XSD.string) g.add((admin_unit_id, ns.besluit.classificatie, URIRef(result['classificatie']['value']))) export_data(g, 'local_administrative_units') g.serialize('input/codelists/local_admininistrative_units.ttl', format='turtle')
def main(): graph = Graph() graph.parse('output/20210830182209-codelist-nationality-complete.ttl') query = """ SELECT ?concept ?label ?adjective WHERE { ?concept a euvoc:Country; skos:prefLabel ?label; skos-xl:altLabel [ a skos-xl:Label; rdfs:label ?adjective; dct:type <http://publications.europa.eu/resource/authority/label-type/ADJECTIVE> ] FILTER(lang(?label) = 'nl') FILTER(lang(?adjective) = 'nl') } """ namespaces = { "euvoc": URIRef("http://publications.europa.eu/ontology/euvoc#"), "skos": SKOS, "skos-xl": URIRef("http://www.w3.org/2008/05/skos-xl#"), "rdfs": RDFS, "dct": URIRef("http://purl.org/dc/terms/") } qres = graph.query(query, initNs=namespaces) nationality_graph = Graph() if qres.bindings: for row in qres: nationality_concept = URIRef(f'{row.concept}') _, nationality_uuid = concept_uri(ns.euvoc.Country, f'{row.concept}') nationality_graph.add( (nationality_concept, RDF.type, ns.euvoc.Country)) nationality_graph.add( (nationality_concept, ns.mu.uuid, Literal(nationality_uuid))) nationality_graph.add( (nationality_concept, SKOS.prefLabel, Literal(f'{row.label}'))) nationality_graph.add( (nationality_concept, RDFS.label, Literal(f'{row.adjective}'))) export_data(nationality_graph, 'codelist-nationality')
def main(file, mode): # To have a new cleansed data, delete the previous xlsx in the output folder central_cleansed = get_cleansed_data(file, 'central') lblod = ns.get_namespace(mode) g = Graph() codelist_ere = load_graph('codelist-ere') locations = load_graph('locations') codelist_bestuurseenheid = load_graph('bestuurseenheid-classificatie-code') bestuurseenheid_classification_id = get_concept_id( codelist_bestuurseenheid, 'Centraal bestuur van de eredienst') VESTIGING_TYPE = URIRef( 'http://lblod.data.gift/concepts/f1381723dec42c0b6ba6492e41d6f5dd') print("########### Mapping started #############") for _, row in central_cleansed.iterrows(): unique_id = str(row['Titel']) + str(row['KBO_CKB_cleansed']) + str( row['Naam_CKB']) abb_id, abb_uuid = concept_uri( lblod + 'centraleBesturenVanDeEredienst/', unique_id) #g.add((abb_id, RDF.type, ns.org.Organization)) #g.add((abb_id, RDF.type, ns.besluit.Bestuurseenheid)) g.add((abb_id, RDF.type, ns.ere.CentraalBestuurVanDeEredienst)) add_literal(g, abb_id, ns.mu.uuid, abb_uuid, XSD.string) add_literal(g, abb_id, SKOS.prefLabel, str(row['Naam_CKB']), XSD.string) #add_literal(g, abb_id, ns.rov.legalName, str(row['Naam_CKB']), XSD.string) g.add( (abb_id, ns.org.classification, bestuurseenheid_classification_id)) if str(row['Type_eredienst_CKB']) != str(np.nan): type_ere = get_concept_id(codelist_ere, str(row['Type_eredienst_CKB'])) g.add((abb_id, ns.ere.typeEredienst, type_ere)) status = get_concept_id(codelist_ere, str(row['Status_CKB_cleansed'])) g.add((abb_id, ns.rov.orgStatus, status)) if str(row['Gemeente Cleansed']) != str(np.nan): location_concept_g = get_location_id(locations, str(row['Gemeente Cleansed']), 'Gemeente') if location_concept_g != None: g.add((abb_id, ns.besluit.werkingsgebied, location_concept_g)) if str(row['Representatief orgaan']) != str(np.nan): national_id, _ = concept_uri(lblod + 'representatieveOrganen/', str(row['Representatief orgaan'])) g.add((national_id, ns.org.linkedTo, abb_id)) bo_id, bo_uuid = concept_uri(lblod + 'centraleBestuursorgaan/', unique_id + 'centraleBestuursorgaan') g.add((bo_id, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bo_id, RDF.type, ns.ere.CentraleBestuursorgaan)) add_literal(g, bo_id, ns.mu.uuid, bo_uuid, XSD.string) bestuursorgaan_classification_id = get_concept_id( codelist_ere, str(row['Bestuursorgaan Type'])) g.add((bo_id, ns.org.classification, bestuursorgaan_classification_id)) g.add((bo_id, ns.besluit.bestuurt, abb_id)) if str(row['KBO_CKB_cleansed']) != str(np.nan): id_class, id_uuid = concept_uri( lblod + 'identificatoren/', str(row['KBO_CKB_cleansed']) + 'identificatoren') g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'KBO nummer', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) kbo_uri, kbo_uuid = concept_uri( lblod + 'gestructureerdeIdentificatoren/', str(row['KBO_CKB_cleansed']) + 'gestructureerdeIdentificatoren') g.add( (kbo_uri, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, kbo_uri, ns.mu.uuid, kbo_uuid, XSD.string) add_literal(g, kbo_uri, ns.generiek.lokaleIdentificator, str(row['KBO_CKB_cleansed']), XSD.string) g.add( (id_class, ns.generiek.gestructureerdeIdentificator, kbo_uri)) g.add((abb_id, ns.adms.identifier, id_class)) if str(row['Titel']) != str(np.nan): id_class, id_uuid = concept_uri( lblod + 'identificatoren/', str(row['Titel']) + 'identificatoren') g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'SharePoint identificator', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) naam_uri, naam_uuid = concept_uri( lblod + 'gestructureerdeIdentificatoren/', str(row['Titel']) + 'gestructureerdeIdentificatoren') g.add( (naam_uri, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, naam_uri, ns.mu.uuid, naam_uuid, XSD.string) add_literal(g, naam_uri, ns.generiek.lokaleIdentificator, str(row['Titel']), XSD.string) g.add( (id_class, ns.generiek.gestructureerdeIdentificator, naam_uri)) g.add((abb_id, ns.adms.identifier, id_class)) # Vestiging if exists_address(row): vestiging_uri, vestiging_uuid = concept_uri( lblod + 'vestigingen/', unique_id + 'vestigingen') g.add((vestiging_uri, RDF.type, ns.org.Site)) add_literal(g, vestiging_uri, ns.mu.uuid, vestiging_uuid, XSD.string) address_uri, address_uuid = concept_uri(lblod + 'adressen/', unique_id + 'adressen') g.add((address_uri, RDF.type, ns.locn.Address)) add_literal(g, address_uri, ns.mu.uuid, address_uuid, XSD.string) add_literal(g, address_uri, ns.locn.thoroughfare, str(row['Straat']), XSD.string) add_literal(g, address_uri, ns.adres['Adresvoorstelling.huisnummer'], str(row['Huisnr Cleansed']), XSD.string) add_literal(g, address_uri, ns.adres['Adresvoorstelling.busnummer'], str(row['Busnummer Cleansed']), XSD.string) add_literal(g, address_uri, ns.locn.postCode, str(row['Postcode Cleansed']), XSD.string) add_literal(g, address_uri, ns.adres.gemeentenaam, str(row['Gemeente Cleansed']), XSD.string) add_literal(g, address_uri, ns.locn.adminUnitL2, str(row['Provincie Cleansed']), XSD.string) add_literal(g, address_uri, ns.adres.land, 'België', XSD.string) add_literal( g, address_uri, ns.locn.fullAddress, get_full_address(str(row['Straat']), str(row['Huisnr Cleansed']), str(row['Busnummer Cleansed']), str(row['Postcode Cleansed']), str(row['Gemeente Cleansed'])), XSD.string) g.add((vestiging_uri, ns.organisatie.bestaatUit, address_uri)) g.add((vestiging_uri, ns.ere.vestigingstype, VESTIGING_TYPE)) g.add((abb_id, ns.org.hasPrimarySite, vestiging_uri)) roles = ['voorzitter', 'secretaris'] if exists_bestuursperiode_central(row): # Bestuursorgaan (in bestuursperiode) bestuur_temporary_17 = None if bool(row['Verkiezingen17']) == True: # Bestuursorgaan in bestuursperiode 2017-2020 bestuur_temporary_17, bestuur_temporary_17_uuid = concept_uri( lblod + 'centralebestuursorganen/', unique_id + 'centralebestuursorganen/2017') g.add((bestuur_temporary_17, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bestuur_temporary_17, RDF.type, ns.ere.CentraleBestuursorgaan)) add_literal(g, bestuur_temporary_17, ns.mu.uuid, bestuur_temporary_17_uuid, XSD.string) g.add((bestuur_temporary_17, ns.generiek.isTijdspecialisatieVan, bo_id)) if str(row['Verkiezingen17_Opmerkingen Cleansed']) != str( np.nan): add_literal( g, bestuur_temporary_17, ns.mandaat.bindingStart, dateparser.parse( str(row['Verkiezingen17_Opmerkingen Cleansed'])), XSD.dateTime) if str(row['Verkiezingen2020_Opmerkingen Cleansed']) != str( np.nan): add_literal( g, bestuur_temporary_17, ns.mandaat.bindingEinde, dateparser.parse( str(row['Verkiezingen2020_Opmerkingen Cleansed'])), XSD.dateTime) elif str(row['Verkiezingen17_Opmerkingen Cleansed']) != str( np.nan): # end date = start date + 3 years add_literal( g, bestuur_temporary_17, ns.mandaat.bindingEinde, (dateparser.parse( str(row['Verkiezingen17_Opmerkingen Cleansed'])) + timedelta(days=1095)).isoformat(), XSD.dateTime) elif str(row['Status_CKB_cleansed']) == 'Niet Actief': add_literal( g, bestuur_temporary_17, ns.mandaat.bindingEinde, dateparser.parse(str(row['Opmerkingen_CKB Date'])), XSD.dateTime) bestuur_temporary_20 = None if str(row['Status_CKB_cleansed']) == 'Actief' and bool( row['Verkiezingen2020']) == True: # Bestuursorgaan in bestuursperiode 2020-2023 bestuur_temporary_20, bestuur_temporary_20_uuid = concept_uri( lblod + 'centralebestuursorganen/', unique_id + 'centralebestuursorganen/2020') g.add((bestuur_temporary_20, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bestuur_temporary_20, RDF.type, ns.ere.CentraleBestuursorgaan)) add_literal(g, bestuur_temporary_20, ns.mu.uuid, bestuur_temporary_20_uuid, XSD.string) g.add((bestuur_temporary_20, ns.generiek.isTijdspecialisatieVan, bo_id)) if str(row['Verkiezingen2020_Opmerkingen Cleansed']) != str( np.nan): add_literal( g, bestuur_temporary_20, ns.mandaat.bindingStart, dateparser.parse( str(row['Verkiezingen2020_Opmerkingen Cleansed'])), XSD.dateTime) # From 2023 the next bestuursorgaan in bestuursperiode will begin the same day if str(row['Type_eredienst_CKB']) == 'Israëlitisch': add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 5, 31).isoformat(), XSD.dateTime) else: add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 4, 30).isoformat(), XSD.dateTime) if exists_mandate_central(row): # Mandaat / Mandataris for role in roles: # Person Role if exists_given_and_family_name(row, role): person_role, person_uuid = concept_uri( lblod + 'personen/', str(row[f'Naam_{role} First']) + str(row[f'Naam_{role} Last'])) add_literal(g, person_role, FOAF.givenName, str(row[f'Naam_{role} First']), XSD.string) add_literal(g, person_role, FOAF.familyName, str(row[f'Naam_{role} Last']), XSD.string) else: person_role, person_uuid = concept_uri( lblod + 'personen/', str(row[f'Naam_{role} Cleansed'])) add_literal(g, person_role, FOAF.givenName, str(row[f'Naam_{role} Cleansed']), XSD.string) g.add((person_role, RDF.type, ns.person.Person)) add_literal(g, person_role, ns.mu.uuid, person_uuid, XSD.string) person_role_mandaat = None if str(row['Status_CKB_cleansed']) == 'Actief' and bool( row['Verkiezingen2020']) == True: person_role_mandaat, person_role_mandaat_uuid = concept_uri( lblod + 'mandaten/', unique_id + 'centralebestuursorganen/2020' + role) g.add((bestuur_temporary_20, ns.org.hasPost, person_role_mandaat)) elif str(row['Status_CKB_cleansed'] ) == 'Niet Actief' and bool( row['Verkiezingen17']) == True: person_role_mandaat, person_role_mandaat_uuid = concept_uri( lblod + 'mandaten/', unique_id + 'centralebestuursorganen/2017' + role) g.add((bestuur_temporary_17, ns.org.hasPost, person_role_mandaat)) if person_role_mandaat != None: ## Mandaat g.add((person_role_mandaat, RDF.type, ns.mandaat.Mandaat)) add_literal(g, person_role_mandaat, ns.mu.uuid, person_role_mandaat_uuid, XSD.string) bestuurfunctie_id = get_concept_id( codelist_ere, get_label_role(role + ' central')) g.add((person_role_mandaat, ns.org.role, bestuurfunctie_id)) ## Mandataris person_role_mandataris, person_role_mandataris_uuid = concept_uri( lblod + 'mandatarissen/', unique_id + person_uuid + 'mandatarissen' + role) #g.add((person_role_mandataris, RDF.type, ns.mandaat.Mandataris)) g.add((person_role_mandataris, RDF.type, ns.ere.EredienstMandataris)) add_literal(g, person_role_mandataris, ns.mu.uuid, person_role_mandataris_uuid, XSD.string) ## Mandataris - Contact punt if exists_contact_role(row, role): person_role_contact_uri, person_role_contact_uuid = concept_uri( lblod + 'contact-punten/', unique_id + person_uuid + 'contact-punten' + str(row[f'Tel_{role} 1'])) g.add((person_role_contact_uri, RDF.type, ns.schema.ContactPoint)) add_literal(g, person_role_contact_uri, ns.mu.uuid, person_role_contact_uuid, XSD.string) g.add((person_role_mandataris, ns.schema.contactPoint, person_role_contact_uri)) add_literal(g, person_role_contact_uri, ns.schema.telephone, str(row[f'Tel_{role} 1']), XSD.string) add_literal(g, person_role_contact_uri, ns.schema.email, str(row[f'Mail_{role} Cleansed']), XSD.string) if str(row[f'Tel_{role} 2']) != str(np.nan): person_role_contact_2_uri, person_role_contact_2_uuid = concept_uri( lblod + 'contact-punten/', unique_id + person_uuid + 'contact-punten' + str(row[f'Tel_{role} 2'])) g.add((person_role_contact_2_uri, RDF.type, ns.schema.ContactPoint)) add_literal(g, person_role_contact_2_uri, ns.mu.uuid, person_role_contact_2_uuid, XSD.string) add_literal(g, person_role_contact_2_uri, ns.schema.telephone, str(row[f'Tel_{role} 2']), XSD.string) g.add((person_role_mandataris, ns.schema.contactPoint, person_role_contact_2_uri)) g.add((person_role_mandataris, ns.mandaat.isBestuurlijkeAliasVan, person_role)) g.add((person_role_mandataris, ns.org.holds, person_role_mandaat)) g.add((person_role_mandataris, ns.mandaat.status, ns.mandataris_status['Effectief'])) if str(row['Verkiezingen2020_Opmerkingen Cleansed'] ) != str(np.nan): add_literal( g, person_role_mandataris, ns.mandaat.start, dateparser.parse( str(row[ 'Verkiezingen2020_Opmerkingen Cleansed'] )), XSD.dateTime) # possible end date = start date + 3 years add_literal( g, person_role_mandataris, ns.ere.geplandeEinddatumAanstelling, (dateparser.parse( str(row[ 'Verkiezingen2020_Opmerkingen Cleansed'] )) + timedelta(days=1095)).isoformat(), XSD.dateTime) elif str( row['Verkiezingen17_Opmerkingen Cleansed'] ) != str(np.nan) and str( row['Status_CKB_cleansed']) == 'Niet Actief': add_literal( g, person_role_mandataris, ns.mandaat.start, dateparser.parse( str(row[ 'Verkiezingen17_Opmerkingen Cleansed']) ), XSD.dateTime) add_literal( g, person_role_mandataris, ns.mandaat.einde, (dateparser.parse( str(row[ 'Verkiezingen17_Opmerkingen Cleansed']) ) + timedelta(days=1095)).isoformat(), XSD.dateTime) g.add((person_role_mandaat, ns.org.heldBy, person_role_mandataris)) g.add((person_role, ns.mandaat.isAangesteldAls, person_role_mandataris)) elif str(row['Status_CKB_cleansed']) == 'Actief': # Bestuursorgaan in bestuursperiode 2020-2023 bestuur_temporary_20, bestuur_temporary_20_uuid = concept_uri( lblod + 'centralebestuursorganen/', unique_id + 'centralebestuursorganen/2020') g.add((bestuur_temporary_20, RDF.type, ns.besluit.Bestuursorgaan)) add_literal(g, bestuur_temporary_20, ns.mu.uuid, bestuur_temporary_20_uuid, XSD.string) g.add((bestuur_temporary_20, ns.generiek.isTijdspecialisatieVan, bo_id)) # From 2023 the next bestuursorgaan in bestuursperiode will begin the same day if str(row['Type_eredienst_CKB']) == 'Israëlitisch': add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 5, 31).isoformat(), XSD.dateTime) else: add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 4, 30).isoformat(), XSD.dateTime) print("########### Mapping finished #############") export_data(g, f'central-{mode}') g.serialize('input/codelists/central.ttl', format='turtle')
def main(file, mode): contact_cleansed = get_cleansed_data(file, 'contact') g = Graph() for _, row in contact_cleansed.iterrows(): abb_id, abb_uuid = concept_uri( ns.lblod + 'persoon/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed'])) g.add((abb_id, RDF.type, ns.person.Person)) add_literal(g, abb_id, ns.mu.uuid, abb_uuid, XSD.string) add_literal(g, abb_id, FOAF.familyName, str(row['Familienaam Contact Cleansed']), XSD.string) add_literal(g, abb_id, ns.persoon.gebruikteVoornaam, str(row['Voornaam Contact Cleansed']), XSD.string) if exists_contact_cont(row): site_id, site_uuid = concept_uri( ns.lblod + 'vesting/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed'])) g.add((site_id, RDF.type, ns.org.Site)) add_literal(g, site_id, ns.mu.uuid, site_uuid, XSD.string) contact_id, contact_uuid = concept_uri( ns.lblod + 'contactpunt/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed']) + '1') g.add((contact_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_id, ns.mu.uuid, contact_uuid, XSD.string) add_literal(g, contact_id, ns.schema.email, str(row['Titel Cleansed']), XSD.string) add_literal(g, contact_id, ns.schema.email, str(row['Mail nr2 Cleansed']), XSD.string) add_literal(g, contact_id, ns.schema.telephone, str(row['Telefoonnr Contact 1']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_id)) if str(row['Telefoonnr Contact 2']) != str(np.nan): contact_tel2_id, contact_tel2_uuid = concept_uri( ns.lblod + 'contactpunt/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed']) + str(row['Telefoonnr Contact 2'])) g.add((contact_tel2_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_tel2_id, ns.mu.uuid, contact_tel2_uuid, XSD.string) add_literal(g, contact_tel2_id, ns.schema.telephone, str(row['Telefoonnr Contact 2']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_tel2_id)) if str(row['GSMnr Contact Cleansed']) != str(np.nan): contact_gsm_id, contact_gsm_uuid = concept_uri( ns.lblod + 'contactpunt/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed']) + str(row['GSMnr Contact Cleansed'])) g.add((contact_gsm_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_gsm_id, ns.mu.uuid, contact_gsm_uuid, XSD.string) add_literal(g, contact_gsm_id, ns.schema.telephone, str(row['GSMnr Contact Cleansed']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_gsm_id)) g.add((abb_id, ns.org.basedAt, site_id)) if str(row['Id']) != str(np.nan): attr_id, _ = concept_uri( ns.lblod + 'gestructureerdeIdentificator/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed'])) g.add( (attr_id, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, attr_id, ns.generiek.lokaleIdentificator, str(row['Id']), XSD.string) g.add((abb_id, ns.generiek.gestructureerdeIdentificator, attr_id)) org_id, _ = concept_uri(ns.lblod + 'organisatie/', str(row['organisation_id'])) if (str(row['Decretale functie Cleansed']) == str(np.nan)) and (str( row['Functietitel Cleansed']) != str(np.nan)): position_id, _ = concept_uri( ns.lblod + 'hoedanigheid/', str(row['organisation_id']) + str(row['Functietitel Cleansed'])) g.add((position_id, RDF.type, ns.organisatie.Hoedanigheid)) # TODO: Map Functietitel properly role_id, _ = concept_uri(ns.lblod + 'rol/', str(row['Functietitel Cleansed'])) g.add((role_id, RDF.type, ns.org.Role)) add_literal(g, role_id, RDFS.label, str(row['Functietitel Cleansed']), XSD.string) g.add((position_id, ns.org.role, role_id)) g.add((position_id, ns.org.postIn, org_id)) g.add((org_id, ns.org.hasPost, position_id)) g.add((abb_id, ns.org.holds, position_id)) g.add((position_id, ns.org.heldBy, abb_id)) elif str(row['Decretale functie Cleansed']) != str(np.nan): # Bestuur temporary bestuur_temporary, bestuur_uuid = concept_uri( ns.lblod + 'bestuursorgaan/', str(row['organisation_id']) + str(datetime.now())) g.add((bestuur_temporary, RDF.type, ns.besluit.Bestuursorgaan)) add_literal(g, bestuur_temporary, ns.mu.uuid, bestuur_uuid, XSD.string) g.add((bestuur_temporary, ns.generiek.isTijdspecialisatieVan, org_id)) ## Functionaris person_functionaris, _ = concept_uri( ns.lblod + 'functionaris/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed']) + str(row['organisation_id']) + str(row['Decretale functie Cleansed'].lower().replace(" ", ""))) g.add((person_functionaris, RDF.type, ns.lblodlg.Functionaris)) g.add((person_functionaris, ns.mandaat.isBestuurlijkeAliasVan, abb_id)) #start #einde #status ~ cf loket lokale besturen PoC https://poc-form-builder.relance.s.redpencil.io/codelijsten # https://data.vlaanderen.be/id/conceptscheme/MandatarisStatusCode g.add((person_functionaris, ns.mandaat.status, ns.functionaris_status[row['Functionaris status']])) g.add((abb_id, ns.mandaat.isAangesteldAls, person_functionaris)) # https://data.vlaanderen.be/doc/conceptscheme/BestuursfunctieCode ## Bestuuursfunctie person_bestuursfunctie, person_bestuursfunctie_uuid = concept_uri( ns.lblod + 'bestuursfunctie/', str(row['Voornaam Contact Cleansed']) + str(row['Familienaam Contact Cleansed']) + str(row['organisation_id'])) g.add( (person_bestuursfunctie, RDF.type, ns.lblodlg.Bestuursfunctie)) add_literal(g, person_bestuursfunctie, ns.mu.uuid, person_bestuursfunctie_uuid, XSD.string) g.add((person_bestuursfunctie, ns.org.role, ns.bestursfunctie_code[row['Decretale functie Cleansed']])) g.add((person_bestuursfunctie, ns.org.heldBy, person_functionaris)) g.add((person_functionaris, ns.org.holds, person_bestuursfunctie)) g.add((bestuur_temporary, ns.org.hasPost, person_bestuursfunctie)) g.add((person_bestuursfunctie, ns.org.postIn, bestuur_temporary)) export_data(g, f'contact-{mode}')
def main(file, mode): worship_cleansed = get_cleansed_data(file, 'worship') lblod = ns.get_namespace(mode) g = Graph() codelist_ere = load_graph('codelist-ere') codelist_bestuurseenheid = load_graph('bestuurseenheid-classificatie-code') locations = load_graph('locations') central_cleansed = get_cleansed_data(file, 'central') central_graph = load_graph('central') worship_bestuurseenheid_classification_id = get_concept_id( codelist_bestuurseenheid, 'Bestuur van de eredienst') VESTIGING_TYPE = URIRef( 'http://lblod.data.gift/concepts/f1381723dec42c0b6ba6492e41d6f5dd') print("########### Mapping started #############") for _, row in worship_cleansed.iterrows(): abb_id, abb_uuid = concept_uri(lblod + 'besturenVanDeEredienst/', str(row['organization_id'])) #g.add((abb_id, RDF.type, ns.org.Organization)) #g.add((abb_id, RDF.type, ns.besluit.Bestuurseenheid)) g.add((abb_id, RDF.type, ns.ere.BestuurVanDeEredienst)) add_literal(g, abb_id, ns.mu.uuid, abb_uuid, XSD.string) add_literal(g, abb_id, SKOS.prefLabel, str(row['Naam_EB']), XSD.string) #add_literal(g, abb_id, ns.rov.legalName, str(row['Naam_EB']), XSD.string) g.add((abb_id, ns.org.classification, worship_bestuurseenheid_classification_id)) if str(row['Type_eredienst Cleansed']) != str(np.nan): type_ere = get_concept_id(codelist_ere, str(row['Type_eredienst Cleansed'])) g.add((abb_id, ns.ere.typeEredienst, type_ere)) add_literal(g, abb_id, ns.ere.grensoverschrijdend, str(row['Grensoverschrijdend']), XSD.boolean) add_literal(g, abb_id, ns.ere.denominatie, str(row['Strekking Cleansed']), XSD.string) status = get_concept_id(codelist_ere, str(row['Status_EB Cleansed'])) g.add((abb_id, ns.rov.orgStatus, status)) central_titel = str(row['Naam_CKB_EB1']) if central_titel != str(np.nan): central_kbo, central_name = find_central_info( central_cleansed, central_titel) ckb_id = find_central_entity(central_graph, central_titel, central_kbo, central_name) #print("out ", central_kbo, central_name) g.add((ckb_id, ns.org.hasSubOrganization, abb_id)) if str(row['Representatief orgaan']) != str(np.nan): national_id, _ = concept_uri(lblod + 'representatieveOrganen/', str(row['Representatief orgaan'])) g.add((national_id, ns.org.linkedTo, abb_id)) bo_id, bo_uuid = concept_uri( lblod + 'eredienstbestuursorganen/', str(row['organization_id']) + 'eredienstbestuursorganen') g.add((bo_id, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bo_id, RDF.type, ns.ere.Eredienstbestuursorgaan)) add_literal(g, bo_id, ns.mu.uuid, bo_uuid, XSD.string) if str(row['Bestuursorgaan Type']) != str(np.nan): bestuursorgaan_classification_id = get_concept_id( codelist_ere, str(row['Bestuursorgaan Type'])) g.add((bo_id, ns.org.classification, bestuursorgaan_classification_id)) g.add((bo_id, ns.besluit.bestuurt, abb_id)) if str(row['KBO_EB Cleansed']) != str(np.nan): id_class, id_uuid = concept_uri( lblod + 'identificatoren/', str(row['KBO_EB Cleansed']) + 'identificatoren') g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'KBO nummer', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) kbo_id, kbo_uuid = concept_uri( lblod + 'gestructureerdeIdentificatoren/', str(row['KBO_EB Cleansed']) + 'gestructureerdeIdentificatoren') g.add((kbo_id, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, kbo_id, ns.mu.uuid, kbo_uuid, XSD.string) add_literal(g, kbo_id, ns.generiek.lokaleIdentificator, str(row['KBO_EB Cleansed']), XSD.string) g.add((id_class, ns.generiek.gestructureerdeIdentificator, kbo_id)) g.add((abb_id, ns.adms.identifier, id_class)) if str(row['Titel']) != str(np.nan): id_class, id_uuid = concept_uri( lblod + 'identificatoren/', str(row['Titel']) + 'identificatoren') g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'SharePoint identificator', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) naam_uri, naam_uuid = concept_uri( lblod + 'gestructureerdeIdentificator/', str(row['Titel']) + 'gestructureerdeIdentificator') g.add( (naam_uri, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, naam_uri, ns.mu.uuid, naam_uuid, XSD.string) add_literal(g, naam_uri, ns.generiek.lokaleIdentificator, str(row['Titel']), XSD.string) g.add( (id_class, ns.generiek.gestructureerdeIdentificator, naam_uri)) g.add((abb_id, ns.adms.identifier, id_class)) if row['Change Event Cleansed'] != '{}': change_events_ = row['Change Event Cleansed'] json_acceptable_string = change_events_.replace("'", "\"") change_events = json.loads(json_acceptable_string) for key, value in change_events.items(): change_event_id = get_concept_id(codelist_ere, key) ce_id, ce_uuid = concept_uri( lblod + 'veranderingsgebeurtenissen/', abb_uuid + row['Change Event Cleansed']) g.add((ce_id, RDF.type, ns.org.ChangeEvent)) add_literal(g, ce_id, ns.mu.uuid, ce_uuid, XSD.string) g.add((ce_id, ns.ch.typeWijziging, change_event_id)) add_literal(g, ce_id, DCTERMS.date, value, XSD.dateTime) add_literal(g, ce_id, DCTERMS.description, row['Statusinfo'], XSD.string) if key == 'Opschorting Erkenning': g.add((ce_id, ns.org.originalOrganization, abb_id)) g.add((abb_id, ns.org.changedBy, ce_id)) else: g.add((ce_id, ns.org.resultingOrganization, abb_id)) g.add((abb_id, ns.org.resultedFrom, ce_id)) local_eng = row['Local Engagement Cleansed'] json_acceptable_string = local_eng.replace("'", "\"") local_eng = json.loads(json_acceptable_string) if len(local_eng['Cross-Border']) > 0: type_involvement_perc_not_null = get_concept_id( codelist_ere, 'Toezichthoudend en financierend') type_involvement_perc_null = get_concept_id( codelist_ere, 'Deel van gebiedsomschrijving') for municipality, perc in local_eng['Municipality'].items(): municipality_res = get_adm_unit_concept( municipality, "Gemeente") if municipality_res != None: municipality_adminunit = URIRef( municipality_res['s']['value']) pi_id, pi_uuid = concept_uri( lblod + 'betrokkenLokaleBesturen/', municipality + abb_uuid) g.add((pi_id, RDF.type, ns.ere.BetrokkenLokaleBesturen)) add_literal(g, pi_id, ns.mu.uuid, pi_uuid, XSD.string) if perc != 0: g.add((pi_id, ns.ere.typebetrokkenheid, type_involvement_perc_not_null)) else: g.add((pi_id, ns.ere.typebetrokkenheid, type_involvement_perc_null)) add_literal(g, pi_id, ns.ere.financieringspercentage, str(perc), XSD.float) g.add((pi_id, ns.org.organization, abb_id)) g.add((municipality_adminunit, ns.ere.betrokkenBestuur, pi_id)) g.add((municipality_adminunit, RDF.type, ns.besluit.Bestuurseenheid)) g.add((municipality_adminunit, ns.org.classification, URIRef(municipality_res['classificatie']['value']))) add_literal(g, municipality_adminunit, SKOS.prefLabel, municipality, XSD.string) add_literal(g, municipality_adminunit, ns.mu.uuid, municipality_res['uuid']['value'], XSD.string) for province, perc in local_eng['Province'].items(): province_res = get_adm_unit_concept(province, "Provincie") if province_res != None: province_adminunit = URIRef(province_res['s']['value']) pi_id, pi_uuid = concept_uri( lblod + 'betrokkenLokaleBesturen/', province + abb_uuid) g.add((pi_id, RDF.type, ns.ere.BetrokkenLokaleBesturen)) add_literal(g, pi_id, ns.mu.uuid, pi_uuid, XSD.string) if perc != 0: g.add((pi_id, ns.ere.typebetrokkenheid, type_involvement_perc_not_null)) else: g.add((pi_id, ns.ere.typebetrokkenheid, type_involvement_perc_null)) add_literal(g, pi_id, ns.ere.financieringspercentage, str(perc), XSD.float) g.add((pi_id, ns.org.organization, abb_id)) g.add((province_adminunit, ns.ere.betrokkenBestuur, pi_id)) g.add((province_adminunit, RDF.type, ns.besluit.Bestuurseenheid)) g.add((province_adminunit, ns.org.classification, URIRef(province_res['classificatie']['value']))) add_literal(g, province_adminunit, SKOS.prefLabel, province, XSD.string) add_literal(g, province_adminunit, ns.mu.uuid, province_res['uuid']['value'], XSD.string) if len(local_eng['Cross-Border'] ) == 1 and local_eng['Municipality']: gemeente_id = get_location_id(locations, local_eng['Cross-Border'][0], 'Gemeente') if gemeente_id != None: g.add((abb_id, ns.besluit.werkingsgebied, gemeente_id)) elif len(local_eng['Cross-Border']) == 1 and local_eng['Province']: provincie_id = get_location_id(locations, local_eng['Cross-Border'][0], 'Provincie') if provincie_id != None: g.add((abb_id, ns.besluit.werkingsgebied, provincie_id)) else: region_label = ', '.join(local_eng['Cross-Border']) region_id, region_uuid = concept_uri( lblod + 'werkingsgebieden/', region_label + abb_uuid) g.add((region_id, RDF.type, ns.prov.Location)) add_literal(g, region_id, ns.mu.uuid, region_uuid, XSD.string) add_literal(g, region_id, RDFS.label, region_label, XSD.string) add_literal(g, region_id, ns.ext.werkingsgebiedNiveau, 'Regio', XSD.string) g.add((abb_id, ns.besluit.werkingsgebied, region_id)) # Vestiging if exists_address(row): site_id, site_uuid = concept_uri( lblod + 'vestigingen/', str(row['organization_id']) + 'vestigingen') g.add((site_id, RDF.type, ns.org.Site)) add_literal(g, site_id, ns.mu.uuid, site_uuid, XSD.string) address_id, address_uuid = concept_uri( lblod + 'adressen/', str(row['organization_id']) + 'adressen') g.add((address_id, RDF.type, ns.locn.Address)) add_literal(g, address_id, ns.mu.uuid, address_uuid, XSD.string) add_literal(g, address_id, ns.locn.thoroughfare, str(row['Straat']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.huisnummer'], str(row['Huisnr Cleansed']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.busnummer'], str(row['Busnummer Cleansed']), XSD.string) add_literal(g, address_id, ns.locn.postCode, str(row['Postcode Cleansed']), XSD.string) add_literal(g, address_id, ns.adres.gemeentenaam, str(row['Gemeente Cleansed']), XSD.string) add_literal(g, address_id, ns.locn.adminUnitL2, str(row['Provincie Cleansed']), XSD.string) add_literal(g, address_id, ns.adres.land, 'België', XSD.string) add_literal( g, address_id, ns.locn.fullAddress, get_full_address(str(row['Straat']), str(row['Huisnr Cleansed']), str(row['Busnummer Cleansed']), str(row['Postcode Cleansed']), str(row['Gemeente Cleansed'])), XSD.string) g.add((site_id, ns.organisatie.bestaatUit, address_id)) g.add((site_id, ns.ere.vestigingstype, VESTIGING_TYPE)) g.add((abb_id, ns.org.hasPrimarySite, site_id)) roles = ['voorzitter', 'secretaris', 'penningmeester', 'Lid4', 'Lid5'] if exists_bestuursperiode_worship(row, roles): # Bestuursorgaan (in bestuursperiode) start_date_bestuur_temporary_17 = None end_date_bestuur_temporary_17 = None start_date_bestuur_temporary_20 = None end_date_bestuur_temporary_20 = None if str(row['Verkiezingen17_Opmerkingen Cleansed']) != str(np.nan): start_date_bestuur_temporary_17 = dateparser.parse( str(row['Verkiezingen17_Opmerkingen Cleansed'])) if str(row['Verkiezingen2020_Opmerkingen Cleansed']) != str( np.nan): start_date_bestuur_temporary_20 = dateparser.parse( str(row['Verkiezingen2020_Opmerkingen Cleansed'])) if bool(row['Verkiezingen17']) == True: # Bestuursorgaan in bestuursperiode 2017-2020 bestuur_temporary_17, bestuur_temporary_17_uuid = concept_uri( lblod + 'eredienstbestuursorganen/', str(row['organization_id']) + 'eredienstbestuursorganen/2017') g.add((bestuur_temporary_17, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bestuur_temporary_17, RDF.type, ns.ere.Eredienstbestuursorgaan)) add_literal(g, bestuur_temporary_17, ns.mu.uuid, bestuur_temporary_17_uuid, XSD.string) g.add((bestuur_temporary_17, ns.generiek.isTijdspecialisatieVan, bo_id)) # start date of governing body temporary 2017 if start_date_bestuur_temporary_17 != None: add_literal(g, bestuur_temporary_17, ns.mandaat.bindingStart, start_date_bestuur_temporary_17.isoformat(), XSD.dateTime) # end date of governing body temporary 2017 if start_date_bestuur_temporary_20 != None: end_date_bestuur_temporary_17 = start_date_bestuur_temporary_20 #print("from 2020", end_date_bestuur_temporary_17) add_literal(g, bestuur_temporary_17, ns.mandaat.bindingEinde, end_date_bestuur_temporary_17.isoformat(), XSD.dateTime) elif start_date_bestuur_temporary_17 != None: remain_years = 2020 - start_date_bestuur_temporary_17.year #print(remain_years) end_date_bestuur_temporary_17 = ( start_date_bestuur_temporary_17 + timedelta(days=remain_years * 365)).isoformat() #print("from 2017", end_date_bestuur_temporary_17) add_literal(g, bestuur_temporary_17, ns.mandaat.bindingEinde, end_date_bestuur_temporary_17, XSD.dateTime) if str(row['Status_EB Cleansed']) == 'Actief': # Bestuursorgaan in bestuursperiode 2020-2023 bestuur_temporary_20, bestuur_temporary_20_uuid = concept_uri( lblod + 'eredienstbestuursorganen/', str(row['organization_id']) + 'eredienstbestuursorganen/2020') g.add((bestuur_temporary_20, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bestuur_temporary_20, RDF.type, ns.ere.Eredienstbestuursorgaan)) add_literal(g, bestuur_temporary_20, ns.mu.uuid, bestuur_temporary_20_uuid, XSD.string) g.add((bestuur_temporary_20, ns.generiek.isTijdspecialisatieVan, bo_id)) if start_date_bestuur_temporary_20 != None: add_literal(g, bestuur_temporary_20, ns.mandaat.bindingStart, start_date_bestuur_temporary_20, XSD.dateTime) # From 2023 the next bestuursorgaan in bestuursperiode will begin the same day if str(row['Type_eredienst Cleansed']) == 'Israëlitisch': end_date_bestuur_temporary_20 = datetime(2023, 5, 31).isoformat() add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, end_date_bestuur_temporary_20, XSD.dateTime) else: end_date_bestuur_temporary_20 = datetime(2023, 4, 30).isoformat() add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, end_date_bestuur_temporary_20, XSD.dateTime) person_lid_mandaat = None # Mandaat / Mandataris for role in roles: if exists_role_worship( row, role) and exists_given_and_family_name(row, role): # Person role person_role, person_uuid = concept_uri( lblod + 'personen/', str(row[f'Naam_{role} First']) + str(row[f'Naam_{role} Last'])) add_literal(g, person_role, FOAF.givenName, str(row[f'Naam_{role} First']), XSD.string) add_literal(g, person_role, FOAF.familyName, str(row[f'Naam_{role} Last']), XSD.string) g.add((person_role, RDF.type, ns.person.Person)) add_literal(g, person_role, ns.mu.uuid, person_uuid, XSD.string) if str(row[f'Datum verkiezing {role}']) != 'NaT': year_election = dateparser.parse( str(row[f'Datum verkiezing {role}'])).year if year_election <= 2019: if not 'Lid' in role: person_role_mandaat, person_role_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/' + role) g.add((bestuur_temporary_17, ns.org.hasPost, person_role_mandaat)) person_lid_mandaat, person_lid_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') g.add((bestuur_temporary_17, ns.org.hasPost, person_lid_mandaat)) #if str(row[f'Type Helft Cleansed {role}']) == 'Kleine helft': #person_lid_mandaat, person_lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') #person_lid_mandaat, person_lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2020/Lid') else: if not 'Lid' in role: person_role_mandaat, person_role_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2020/' + role) g.add((bestuur_temporary_20, ns.org.hasPost, person_role_mandaat)) person_lid_mandaat, person_lid_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2020/Lid') g.add((bestuur_temporary_20, ns.org.hasPost, person_lid_mandaat)) elif str(row['Status_EB Cleansed']) == 'Niet Actief': if not 'Lid' in role: person_role_mandaat, person_role_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/' + role) g.add((bestuur_temporary_17, ns.org.hasPost, person_role_mandaat)) person_lid_mandaat, person_lid_mandaat_uuid = concept_uri( lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') g.add((bestuur_temporary_17, ns.org.hasPost, person_lid_mandaat)) if person_role_mandaat != None: start_mandataris = None expected_end_mandataris = None end_mandataris = None if str(row[f'Datum verkiezing {role}']) != 'NaT': start_mandataris = dateparser.parse( str(row[f'Datum verkiezing {role}'])) year_election = dateparser.parse( str(row[f'Datum verkiezing {role}'])).year if year_election >= 2017 and year_election < 2020 and end_date_bestuur_temporary_17 != None: expected_end_mandataris = end_date_bestuur_temporary_17 end_mandataris = expected_end_mandataris elif end_date_bestuur_temporary_17 == None: remain_years = 2020 - year_election expected_end_mandataris = ( start_mandataris + timedelta( days=remain_years * 365)).isoformat() end_mandataris = expected_end_mandataris elif end_date_bestuur_temporary_20 != None: expected_end_mandataris = end_date_bestuur_temporary_20 if 'Lid' not in role: ## Role - Mandaat g.add((person_role_mandaat, RDF.type, ns.mandaat.Mandaat)) add_literal(g, person_role_mandaat, ns.mu.uuid, person_role_mandaat_uuid, XSD.string) bestuurfunctie_id = get_concept_id( codelist_ere, get_label_role(role + ' worship')) g.add((person_role_mandaat, ns.org.role, bestuurfunctie_id)) ## Role - Mandataris person_role_mandataris, person_role_mandataris_uuid = concept_uri( lblod + 'mandatarissen/', str(row['organization_id']) + person_uuid + role) #g.add((person_role_mandataris, RDF.type, ns.mandaat.Mandataris)) g.add((person_role_mandataris, RDF.type, ns.ere.EredienstMandataris)) add_literal(g, person_role_mandataris, ns.mu.uuid, person_role_mandataris_uuid, XSD.string) g.add((person_role_mandataris, ns.mandaat.isBestuurlijkeAliasVan, person_role)) g.add((person_role_mandataris, ns.org.holds, person_role_mandaat)) g.add((person_role_mandataris, ns.mandaat.status, ns.mandataris_status['Effectief'])) g.add((person_role, ns.mandaat.isAangesteldAls, person_role_mandataris)) if start_mandataris != None: add_literal(g, person_role_mandataris, ns.mandaat.start, start_mandataris, XSD.dateTime) if expected_end_mandataris != None: add_literal( g, person_role_mandataris, ns.ere.geplandeEinddatumAanstelling, expected_end_mandataris, XSD.dateTime) if end_mandataris != None: add_literal(g, person_role_mandataris, ns.mandaat.einde, end_mandataris, XSD.dateTime) # Lid - Mandaat g.add( (person_lid_mandaat, RDF.type, ns.mandaat.Mandaat)) add_literal(g, person_lid_mandaat, ns.mu.uuid, person_lid_mandaat_uuid, XSD.string) bestuurfunctie_id = get_concept_id( codelist_ere, get_label_role('lid worship')) g.add((person_lid_mandaat, ns.org.role, bestuurfunctie_id)) person_lid_mandataris, person_lid_mandataris_uuid = concept_uri( lblod + 'mandatarissen/', str(row['organization_id']) + person_uuid + 'lid') #g.add((person_lid_mandataris, RDF.type, ns.mandaat.Mandataris)) g.add((person_lid_mandataris, RDF.type, ns.ere.EredienstMandataris)) add_literal(g, person_lid_mandataris, ns.mu.uuid, person_lid_mandataris_uuid, XSD.string) g.add((person_lid_mandataris, ns.mandaat.isBestuurlijkeAliasVan, person_role)) g.add((person_lid_mandataris, ns.org.holds, person_lid_mandaat)) if str(row[f'Type Helft Cleansed {role}']) != str( np.nan): type_half = get_concept_id( codelist_ere, str(row[f'Type Helft Cleansed {role}'])) g.add((person_lid_mandataris, ns.ere.typeHelft, type_half)) g.add((person_lid_mandataris, ns.mandaat.status, ns.mandataris_status['Effectief'])) g.add((person_role, ns.mandaat.isAangesteldAls, person_lid_mandataris)) if start_mandataris != None: add_literal(g, person_lid_mandataris, ns.mandaat.start, start_mandataris, XSD.dateTime) if expected_end_mandataris != None: add_literal(g, person_lid_mandataris, ns.ere.geplandeEinddatumAanstelling, expected_end_mandataris, XSD.dateTime) if end_mandataris != None: add_literal(g, person_lid_mandataris, ns.mandaat.einde, end_mandataris, XSD.dateTime) ### Mandataris - Contact punt if exists_contact_role(row, role): person_role_contact_uri, person_role_contact_uuid = concept_uri( lblod + 'contact-punten/', str(row['organization_id']) + person_uuid + role + str(row[f'Tel_{role} 1'])) g.add((person_role_contact_uri, RDF.type, ns.schema.ContactPoint)) add_literal(g, person_role_contact_uri, ns.mu.uuid, person_role_contact_uuid, XSD.string) g.add((person_role_mandataris, ns.schema.contactPoint, person_role_contact_uri)) add_literal(g, person_role_contact_uri, ns.schema.telephone, str(row[f'Tel_{role} 1']), XSD.string) add_literal(g, person_role_contact_uri, ns.schema.email, str(row[f'Mail_{role} Cleansed']), XSD.string) if str(row[f'Tel_{role} 2']) != str(np.nan): person_role_contact_2_uri, person_role_contact_2_uuid = concept_uri( lblod + 'contact-punten/', str(row['organization_id']) + person_uuid + role + str(row[f'Tel_{role} 2'])) g.add((person_role_contact_2_uri, RDF.type, ns.schema.ContactPoint)) add_literal(g, person_role_contact_2_uri, ns.mu.uuid, person_role_contact_2_uuid, XSD.string) add_literal(g, person_role_contact_2_uri, ns.schema.telephone, str(row[f'Tel_{role} 2']), XSD.string) g.add((person_role_mandataris, ns.schema.contactPoint, person_role_contact_2_uri)) ### Role - Adres if exists_address_role(row, role): person_role_address_id, person_role_address_uuid = concept_uri( lblod + 'adressen/', str(row['organization_id']) + person_uuid + role + 'adressen') g.add((person_role_address_id, RDF.type, ns.locn.Address)) add_literal(g, person_role_address_id, ns.mu.uuid, person_role_address_uuid, XSD.string) g.add( (person_role_contact_uri, ns.locn.address, person_role_address_id)) add_literal(g, person_role_address_id, ns.locn.fullAddress, str(row[f'Adres_{role} Cleansed']), XSD.string) #### # Lids # for role in roles_lid: # if exists_role_worship(row, role): # if exists_given_and_family_name(row, role): # lid, lid_uuid = concept_uri(lblod + 'personen/', str(row[f'Naam_{role} First']) + str(row[f'Naam_{role} Last'])) # add_literal(g, lid, FOAF.givenName, str(row[f'Naam_{role} First']), XSD.string) # add_literal(g, lid, FOAF.familyName, str(row[f'Naam_{role} Last']), XSD.string) # else: # lid, lid_uuid = concept_uri(lblod + 'personen/', str(row[f'Naam_{role} Cleansed'])) # add_literal(g, lid, FOAF.givenName, str(row[f'Naam_{role} Cleansed']), XSD.string) # g.add((lid, RDF.type, ns.person.Person)) # add_literal(g, lid, ns.mu.uuid, lid_uuid, XSD.string) # ## Lid - Mandaat # #lid_mandaat = None # if str(row[f'Datum verkiezing {role}']) != 'NaT': # year_election = dateparser.parse(str(row[f'Datum verkiezing {role}'])).year # if person_lid_mandaat != None: # if year_election <= 2019: # if str(row[f'Type Helft Cleansed {role}']) == 'Kleine helft': # lid_mandaat, lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') # else: # lid_mandaat, lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2020/Lid') # g.add((lid_mandaat, ns.org.postIn, bestuur_temporary_17)) # lid_mandaat, lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') # g.add((bestuur_temporary_17, ns.org.hasPost, person_lid_mandaat)) # else: # g.add((bestuur_temporary_20, ns.org.hasPost, person_lid_mandaat)) # elif person_lid_mandaat == None and year_election <= 2019: # person_lid_mandaat, person_lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') # g.add((bestuur_temporary_20, ns.org.hasPost, person_lid_mandaat)) # else: # person_lid_mandaat, person_lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2020/Lid') # g.add((bestuur_temporary_20, ns.org.hasPost, person_lid_mandaat)) # elif str(row['Status_EB Cleansed']) == 'Niet Actief': # #lid_mandaat, lid_mandaat_uuid = concept_uri(lblod + 'mandaten/', str(row['organization_id']) + 'eredienstbestuursorganen/2017/Lid') # #g.add((lid_mandaat, ns.org.postIn, bestuur_temporary_17)) # g.add((bestuur_temporary_17, ns.org.hasPost, person_lid_mandaat)) # # if lid_mandaat != None: # # g.add((lid_mandaat, RDF.type, ns.mandaat.Mandaat)) # # add_literal(g, lid_mandaat, ns.mu.uuid, lid_mandaat_uuid, XSD.string) # # bestuurfunctie_id = get_concept_id(codelist_ere, get_label_role('lid worship')) # # g.add((lid_mandaat, ns.org.role, bestuurfunctie_id)) # ## Lid - Mandataris # lid_mandataris, lid_mandataris_uuid = concept_uri(lblod + 'mandatarissen/', str(row['organization_id']) + lid_uuid + role) # #g.add((lid_mandataris, RDF.type, ns.mandaat.Mandataris)) # g.add((lid_mandataris, RDF.type, ns.ere.EredienstMandataris)) # add_literal(g, lid_mandataris, ns.mu.uuid, lid_mandataris_uuid, XSD.string) # g.add((lid_mandataris, ns.mandaat.isBestuurlijkeAliasVan, lid)) # g.add((lid_mandataris, ns.org.holds, person_lid_mandaat)) # if str(row[f'Type Helft Cleansed {role}']) != str(np.nan): # type_half = get_concept_id(codelist_ere, str(row[f'Type Helft Cleansed {role}'])) # g.add((lid_mandataris, ns.ere.typeHelft, type_half)) # if str(row[f'Datum verkiezing {role}']) != 'NaT': # add_literal(g, lid_mandataris, ns.mandaat.start, dateparser.parse(str(row[f'Datum verkiezing {role}'])).isoformat(), XSD.dateTime) # add_literal(g, person_role_mandataris, ns.ere.geplandeEinddatumAanstelling, (dateparser.parse(str(row[f'Datum verkiezing {role}'])) + timedelta(days=1095)).isoformat(), XSD.dateTime) # #g.add((lid_mandaat, ns.org.heldBy, lid_mandataris)) # g.add((lid, ns.mandaat.isAangesteldAls, lid_mandataris)) elif str(row['Status_EB Cleansed']) == 'Actief': # Bestuursorgaan in bestuursperiode 2020-2023 bestuur_temporary_20, bestuur_temporary_20_uuid = concept_uri( lblod + 'eredienstbestuursorganen/', str(row['organization_id']) + 'eredienstbestuursorganen/2020') g.add((bestuur_temporary_20, RDF.type, ns.besluit.Bestuursorgaan)) #g.add((bestuur_temporary_20, RDF.type, ns.ere.Eredienstbestuursorgaan)) add_literal(g, bestuur_temporary_20, ns.mu.uuid, bestuur_temporary_20_uuid, XSD.string) g.add((bestuur_temporary_20, ns.generiek.isTijdspecialisatieVan, bo_id)) # From 2023 the next bestuursorgaan in bestuursperiode will begin the same day if str(row['Type_eredienst Cleansed']) == 'Israëlitisch': add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 5, 31).isoformat(), XSD.dateTime) else: add_literal(g, bestuur_temporary_20, ns.mandaat.bindingEinde, datetime(2023, 4, 30).isoformat(), XSD.dateTime) print("########### Mapping finished #############") export_data(g, f'worship-{mode}')
def main(file, mode): national_raw = pd.read_excel(file) lblod = ns.get_namespace(mode) codelist_ere = load_graph('codelist-ere') g = Graph() for _, row in national_raw.iterrows(): abb_id, abb_uuid = concept_uri(lblod + 'representatieveOrganen/', str(row['representatief orgaan'])) #g.add((abb_id, RDF.type, ns.org.Organization)) g.add((abb_id, RDF.type, ns.ere.RepresentatiefOrgaan)) add_literal(g, abb_id, ns.mu.uuid, abb_uuid, XSD.string) add_literal(g, abb_id, SKOS.prefLabel, str(row['representatief orgaan']), XSD.string) #g.add((abb_id, RDFS.subClassOf, ns.org.Organization)) #g.add((abb_id, RDFS.subClassOf, ns.org.RegisteredOrganization)) if str(row['Type Eredienst']) != str(np.nan): type_ere = get_concept_id(codelist_ere, str(row['Type Eredienst'])) g.add((abb_id, ns.ere.typeEredienst, type_ere)) status = get_concept_id(codelist_ere, str(row['Status'])) g.add((abb_id, ns.rov.orgStatus, status)) id_class, id_uuid = concept_uri(lblod + 'identificatoren/', str(row['KBO_nr']) + 'identificatoren') g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'KBO nummer', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) kbo_uri, kbo_uuid = concept_uri( lblod + 'gestructureerdeIdentificatoren/', str(row['KBO_nr']) + 'gestructureerdeIdentificatoren') g.add((kbo_uri, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, kbo_uri, ns.mu.uuid, kbo_uuid, XSD.string) add_literal(g, kbo_uri, ns.generiek.lokaleIdentificator, str(row['KBO_nr']), XSD.string) g.add((id_class, ns.generiek.gestructureerdeIdentificator, kbo_uri)) g.add((abb_id, ns.adms.identifier, id_class)) site_id, site_uuid = concept_uri( lblod + 'vestigingen/', str(row['representatief orgaan']) + 'vestigingen') g.add((site_id, RDF.type, ns.org.Site)) add_literal(g, site_id, ns.mu.uuid, site_uuid, XSD.string) contact_id, contact_uuid = concept_uri( lblod + 'contact-punten/', str(row['representatief orgaan']) + 'contact-punten/1') g.add((contact_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_id, ns.mu.uuid, contact_uuid, XSD.string) add_literal(g, contact_id, FOAF.page, str(row['Website']), XSD.anyURI) add_literal(g, contact_id, ns.schema.telephone, str(row['Telefoon']), XSD.string) add_literal(g, contact_id, ns.schema.faxNumber, str(row['Fax']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_id)) if str(row['Telefoon 2']) != str(np.nan) or str(row['Fax 2']) != str( np.nan): contact_2_id, contact_2_uuid = concept_uri( lblod + 'contact-punten/', str(row['representatief orgaan']) + 'contact-punten/2') g.add((contact_2_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_2_id, ns.mu.uuid, contact_2_uuid, XSD.string) add_literal(g, contact_2_id, ns.schema.telephone, str(row['Telefoon 2']), XSD.string) add_literal(g, contact_2_id, ns.schema.faxNumber, str(row['Fax 2']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_2_id)) address_id, address_uuid = concept_uri( lblod + 'adressen/', str(row['representatief orgaan']) + 'adressen') g.add((address_id, RDF.type, ns.locn.Address)) add_literal(g, address_id, ns.mu.uuid, address_uuid, XSD.string) add_literal(g, address_id, ns.locn.thoroughfare, str(row['Straatnaam']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.huisnummer'], str(row['Huisnummer']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.busnummer'], str(row['Busnummer']), XSD.string) add_literal(g, address_id, ns.locn.postCode, str(row['Postcode']), XSD.string) add_literal(g, address_id, ns.adres.gemeentenaam, str(row['Gemeentenaam']), XSD.string) add_literal(g, address_id, ns.locn.adminUnitL2, str(row['Provincie']), XSD.string) add_literal(g, address_id, ns.adres.land, 'België', XSD.string) add_literal( g, address_id, ns.locn.fullAddress, get_full_address(str(row['Straatnaam']), str(row['Huisnummer']), str(row['Busnummer']), str(row['Postcode']), str(row['Gemeentenaam'])), XSD.string) g.add((site_id, ns.organisatie.bestaatUit, address_id)) g.add((abb_id, ns.org.hasPrimarySite, site_id)) person_id, person_uuid = concept_uri( lblod + 'personen/', str(row['Voornaam']) + str(row['Achternaam']) + str(row['Gebruikte Voornaam'])) g.add((person_id, RDF.type, ns.person.Person)) add_literal(g, person_id, ns.mu.uuid, person_uuid, XSD.string) add_literal(g, person_id, FOAF.givenName, str(row['Voornaam']), XSD.string) add_literal(g, person_id, FOAF.familyName, str(row['Achternaam']), XSD.string) add_literal(g, person_id, ns.persoon.gebruikteVoornaam, str(row['Gebruikte Voornaam']), XSD.string) role_id, role_uuid = concept_uri(lblod + 'rollen/', str(row['Rol'])) g.add((role_id, RDF.type, ns.org.Role)) add_literal(g, role_id, ns.mu.uuid, role_uuid, XSD.string) add_literal(g, role_id, SKOS.prefLabel, str(row['Rol']), XSD.string) position_id, position_uuid = concept_uri( lblod + 'posities/', str(row['representatief orgaan']) + str(row['Rol'])) g.add((position_id, RDF.type, ns.org.Post)) add_literal(g, position_id, ns.mu.uuid, position_uuid, XSD.string) g.add((position_id, ns.org.role, role_id)) #g.add((position_id, ns.org.postIn, abb_id)) g.add((abb_id, ns.org.hasPost, position_id)) person_position_id, person_position_uuid = concept_uri( lblod + 'agentenInPositie/', str(row['representatief orgaan']) + str(row['Voornaam']) + str(row['Achternaam']) + str(row['Rol'])) g.add((person_position_id, RDF.type, ns.organisatie.AgentInPositie)) add_literal(g, person_position_id, ns.mu.uuid, person_position_uuid, XSD.string) g.add((person_position_id, ns.org.holds, position_id)) g.add((person_position_id, ns.org.heldBy, person_id)) export_data(g, f'national-{mode}')
def main(file, mode): orgs_cleansed = get_cleansed_data(file, 'org') codelist_bestuurseenheid = load_graph('bestuurseenheid-classificatie-code') g = Graph() for _, row in orgs_cleansed.iterrows(): #there are more than one type in the file abb_id, abb_uuid = concept_uri(ns.lblod + 'bestuurseenheid/', str(row['organisation_id'])) #g.add((abb_id, RDF.type, ns.org.Bestuurseenheid)) add_literal(g, abb_id, ns.mu.uuid, abb_uuid, XSD.string) #g.add((abb_id, RDFS.subClassOf, ns.org.Organization)) add_literal(g, abb_id, SKOS.prefLabel, str(row['Titel']), XSD.string) #add_literal(g, abb_id, ns.rov.legalName, str(row['Maatschappelijke Naam'])) bestuurseenheid_classification_id = get_concept_id( codelist_bestuurseenheid, str(row['Type Entiteit'])) g.add( (abb_id, ns.org.classification, bestuurseenheid_classification_id)) status, _ = concept_uri(ns.os, str(row['Organisatiestatus'])) g.add((abb_id, ns.rov.orgStatus, status)) add_literal(g, abb_id, ns.dbpedia.nisCode, str(row['NIScode_cleansed']), XSD.string) if str(row['KBOnr_cleansed']) != str(np.nan): id_class, id_uuid = concept_uri(ns.lblod + 'identifier/', str(row['KBO_CKB_cleansed'])) g.add((id_class, RDF.type, ns.adms.Identifier)) add_literal(g, id_class, SKOS.notation, 'KBO nummer', XSD.string) add_literal(g, id_class, ns.mu.uuid, id_uuid, XSD.string) kbo_id, _ = concept_uri( ns.lblod + 'gestructureerdeIdentificator/', str(row['organisation_id']) + str(row['KBOnr_cleansed'])) g.add((kbo_id, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, kbo_id, ns.generiek.lokaleIdentificator, str(row['KBOnr_cleansed']), XSD.string) g.add((id_class, ns.generiek.gestructureerdeIdentificator, kbo_id)) g.add((abb_id, ns.adms.identifier, id_class)) if str(row['Unieke Naam']) != str(np.nan): unieke_naam_id, _ = concept_uri( ns.lblod + 'gestructureerdeIdentificator/', str(row['organisation_id']) + str(row['Unieke Naam']) + '1') g.add((unieke_naam_id, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, unieke_naam_id, ns.generiek.lokaleIdentificator, str(row['Unieke Naam']), XSD.string) g.add((abb_id, ns.generiek.gestructureerdeIdentificator, unieke_naam_id)) if str(row['Unieke Naam van actieve organisaties']) != str(np.nan): unieke_naam_active_id, _ = concept_uri( ns.lblod + 'gestructureerdeIdentificator/', str(row['organisation_id']) + str(row['Unieke Naam van actieve organisaties']) + '2') g.add((unieke_naam_active_id, RDF.type, ns.generiek.GestructureerdeIdentificator)) add_literal(g, unieke_naam_active_id, ns.generiek.lokaleIdentificator, str(row['Unieke Naam van actieve organisaties']), XSD.string) g.add((abb_id, ns.generiek.gestructureerdeIdentificator, unieke_naam_id)) if exists_site_org(row): site_id, _ = concept_uri(ns.lblod + 'vesting/', str(row['organisation_id'])) g.add((site_id, RDF.type, ns.org.Site)) if exists_contact_org(row): contact_id, _ = concept_uri(ns.lblod + 'contactinfo/', str(row['organisation_id'])) g.add((contact_id, RDF.type, ns.schema.ContactPoint)) add_literal(g, contact_id, FOAF.page, str(row['Website Cleansed']), XSD.anyURI) add_literal(g, contact_id, ns.schema.telephone, str(row['Algemeen telefoonnr']), XSD.string) add_literal(g, contact_id, ns.schema.email, str(row['Algemeen mailadres']), XSD.string) g.add((site_id, ns.schema.siteAddress, contact_id)) if exists_address(row): address_id, _ = concept_uri(ns.lblod + 'adresvoorstelling/', str(row['organisation_id'])) g.add((address_id, RDF.type, ns.locn.Address)) add_literal(g, address_id, ns.locn.thoroughfare, str(row['Straat']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.huisnummer'], str(row['Huisnr_cleansed']), XSD.string) add_literal(g, address_id, ns.adres['Adresvoorstelling.busnummer'], str(row['Busnr_new']), XSD.string) add_literal(g, address_id, ns.locn.postCode, str(row['Postcode van de organisatie_cleansed']), XSD.string) add_literal(g, address_id, ns.adres.gemeentenaam, str(row['Gemeente van de organisatie']), XSD.string) add_literal(g, address_id, ns.locn.adminUnitL2, str(row['Provincie Cleansed']), XSD.string) add_literal(g, address_id, ns.adres.land, 'België', XSD.string) g.add((site_id, ns.organisatie.bestaatUit, address_id)) g.add((abb_id, ns.org.hasPrimarySite, site_id)) if row['Unieke Naam'] != row['Moederentiteit']: find_moeder_kboid = orgs_cleansed[orgs_cleansed['Unieke Naam'] == row['Moederentiteit']] if len(find_moeder_kboid) > 0: org_id, _ = concept_uri( ns.lblod + 'organisatie/', str(find_moeder_kboid.iloc[0]['organisation_id'])) g.add((abb_id, ns.org.linkedTo, org_id)) if pd.notna(row['Actief vanaf']): change_event_open_id, _ = concept_uri( ns.lblod + 'veranderingsgebeurtenis/', str(row['organisation_id']) + str(row['Actief vanaf'])) g.add((change_event_open_id, RDF.type, ns.euro.FoundationEvent)) add_literal(g, change_event_open_id, DC.date, str(row['Actief vanaf']), XSD.dateTime) g.add((abb_id, ns.org.resultedFrom, change_event_open_id)) if row['Organisatiestatus'] == 'Valt niet meer onder Vlaams toezicht': change_event_not_flemish_id, _ = concept_uri( ns.lblod + 'veranderingsgebeurtenis/', str(row['organisation_id']) + str(row['Actief tot']) + str(row['Actief tot'])) g.add((change_event_not_flemish_id, RDF.type, ns.organisatie.Vervanging)) g.add((abb_id, ns.org.resultedFrom, change_event_not_flemish_id)) elif row['Organisatiestatus'] == 'Gefusioneerd': change_event_merged_id, _ = concept_uri( ns.lblod + 'veranderingsgebeurtenis/', str(row['organisation_id']) + str(row['Actief tot'])) g.add((change_event_merged_id, RDF.type, ns.organisatie.Fusie)) if pd.notna(row['Actief tot']): add_literal(g, change_event_merged_id, DC.date, str(row['Actief tot']), XSD.dateTime) # addLiteral(change_event_merged_id, NEED PROPERTY, 'Opmerkingen ivm Organisatie') merged_abb_id, _ = concept_uri(ns.lblod + 'organisatie/', str(row['Resulting organisation'])) g.add( (change_event_merged_id, ns.org.originalOrganization, abb_id)) g.add((change_event_merged_id, ns.org.resultingOrganization, merged_abb_id)) g.add((abb_id, ns.org.changedBy, change_event_merged_id)) elif pd.notna(row['Actief tot']): change_event_close_id, _ = concept_uri( ns.lblod + 'veranderingsgebeurtenis/', str(row['organisation_id']) + str(row['Actief tot'])) g.add( (change_event_close_id, RDF.type, ns.organisatie.Stopzetting)) add_literal(g, change_event_close_id, DC.date, str(row['Actief tot']), XSD.dateTime) g.add((abb_id, ns.org.changedBy, change_event_close_id)) export_data(g, f'org-{mode}')