|
@@ -1,286 +0,0 @@
|
|
|
-{
|
|
|
- "cells": [
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 1,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "# Utilities to read/write csv files\n",
|
|
|
- "import csv\n",
|
|
|
- "import unicodedata\n",
|
|
|
- "# Ordered Dicts\n",
|
|
|
- "from collections import OrderedDict\n",
|
|
|
- "import json\n",
|
|
|
- "\n",
|
|
|
- "\n",
|
|
|
- "# OPZIONAL IMPORTS\n",
|
|
|
- "\n",
|
|
|
- "# For timestamping/simple speed tests\n",
|
|
|
- "from datetime import datetime\n",
|
|
|
- "# Random number generator\n",
|
|
|
- "from random import *\n",
|
|
|
- "# System & command line utilities\n",
|
|
|
- "import sys\n",
|
|
|
- "# Json for the dictionary\n",
|
|
|
- "import json\n",
|
|
|
- "import re"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "import_dir = '/Users/federicaspinelli/Google Drive/OVI-CNR/CSV/ASPO/datini/'\n",
|
|
|
- "export_dir = '/Users/federicaspinelli/Google Drive/OVI-CNR/RDF/ASPO/datini/'"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 3,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "# Custom class to store URIs + related infos for the ontologies/repositories\n",
|
|
|
- "\n",
|
|
|
- "class RDFcoords:\n",
|
|
|
- " def __init__(self, uri, prefix, code = None):\n",
|
|
|
- " self.uri = uri\n",
|
|
|
- " self.prefix = prefix\n",
|
|
|
- " self.code = code\n",
|
|
|
- "\n",
|
|
|
- "\n",
|
|
|
- "# Repositories\n",
|
|
|
- "datiniCoords = RDFcoords('<http://datini.archiviodistato.prato.it/la-ricerca/scheda/>', 'dt:')\n",
|
|
|
- "personAuthCoords = RDFcoords('<http://www.archiviodistato.prato.it/accedi-e-consulta/aspoMV001/scheda/IT-ASPO-AU00003->', 'pa:')\n",
|
|
|
- "# W3 Predicates\n",
|
|
|
- "hasTypeCoords = RDFcoords('<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>', 'tp:')\n",
|
|
|
- "labelCoords = RDFcoords('<http://www.w3.org/2000/01/rdf-schema#label>', 'lb:')\n",
|
|
|
- "# CIDOC Predicates\n",
|
|
|
- "identifiedByCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P1_is_identified_by>', 'ib:')\n",
|
|
|
- "hasTypePCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P2_has_type>', 'te:')\n",
|
|
|
- "hasTimeSpanCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P4_has_time-span>', 'hs:')\n",
|
|
|
- "tookPlaceCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P7_took_place_at>', 'tk:')\n",
|
|
|
- "carriedByCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P14_carried_out_by>', 'cb:')\n",
|
|
|
- "wasBroughtCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P92i_was_brought_into_existence_by>', 'wb:')\n",
|
|
|
- "hasProducedCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P108_has_produced>', 'hp:')\n",
|
|
|
- "wasProducedCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P108i_was_produced_by>', 'wp:')\n",
|
|
|
- "carriesCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P128_carries>', 'ca:')\n",
|
|
|
- "hasAlternativeFormCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P139_has_alternative_form>', 'af:')\n",
|
|
|
- "# CIDOC Objects\n",
|
|
|
- "productionCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E12_Production>', 'pr:', 'E12')\n",
|
|
|
- "personCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E21_Person>', 'ps:', 'E21')\n",
|
|
|
- "manMadeObjectCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E22_Man-Made_Object>', 'mo:', 'E22')\n",
|
|
|
- "titleCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E35_Title>', 'ti:' ,'E35')\n",
|
|
|
- "identifierCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E42_Identifier>', 'id:', 'E42')\n",
|
|
|
- "#placeAppellationCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E44_Place_appellation>', 'pa:', 'E44')\n",
|
|
|
- "timeSpanCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E52_Time-Span>', 'ts:', 'E52')\n",
|
|
|
- "placeCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E53_Place>', 'pl:', 'E53')\n",
|
|
|
- "typeCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E55_Type>', 'ty:', 'E55')\n",
|
|
|
- "creationCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E65_Creation>', 'cr:', 'E65')\n",
|
|
|
- "informationObjectCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object>', 'io:', 'E73')\n",
|
|
|
- "pcarriedByCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/PC14_carried_out_by>', 'cy:', 'PC14')\n",
|
|
|
- "roleOfCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P14.1_in_the_role_of>', 'ro:')\n",
|
|
|
- "hasDomainCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P01_has_domain>', 'hd:')\n",
|
|
|
- "hasRangeCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P02_has_range>', 'hr:')\n",
|
|
|
- "actorCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E39_Actor>', 'ac:', 'E39')\n",
|
|
|
- "hadParticipantCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P11_had_participant>', 'pt:')\n"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 4,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "# Basic functions for triples / shortened triples in TTL format\n",
|
|
|
- "\n",
|
|
|
- "def triple(subject, predicate, object1):\n",
|
|
|
- " line = subject + ' ' + predicate + ' ' + object1\n",
|
|
|
- " return line\n",
|
|
|
- "\n",
|
|
|
- "def doublet(predicate, object1):\n",
|
|
|
- " line = ' ' + predicate + ' ' + object1\n",
|
|
|
- " return line\n",
|
|
|
- "\n",
|
|
|
- "def singlet(object1):\n",
|
|
|
- " line = ' ' + object1\n",
|
|
|
- " return line\n",
|
|
|
- "\n",
|
|
|
- "# Line endings in TTL format\n",
|
|
|
- "continueLine1 = ' ;\\n'\n",
|
|
|
- "continueLine2 = ' ,\\n'\n",
|
|
|
- "closeLine = ' .\\n'"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 5,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "def writeTTLHeader(output):\n",
|
|
|
- " output.write('@prefix ' + datiniCoords.prefix + ' ' + datiniCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + personAuthCoords.prefix + ' ' + personAuthCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasTypeCoords.prefix + ' ' + hasTypeCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + labelCoords.prefix + ' ' + labelCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + identifiedByCoords.prefix + ' ' + identifiedByCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasTypePCoords.prefix + ' ' + hasTypePCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasTimeSpanCoords.prefix + ' ' + hasTimeSpanCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + tookPlaceCoords.prefix + ' ' + tookPlaceCoords.uri + closeLine) \n",
|
|
|
- " output.write('@prefix ' + carriedByCoords.prefix + ' ' + carriedByCoords.uri + closeLine) \n",
|
|
|
- " output.write('@prefix ' + wasBroughtCoords.prefix + ' ' + wasBroughtCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasProducedCoords.prefix + ' ' + hasProducedCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + wasProducedCoords.prefix + ' ' + wasProducedCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + carriesCoords.prefix + ' ' + carriesCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasAlternativeFormCoords.prefix + ' ' + hasAlternativeFormCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + productionCoords.prefix + ' ' + productionCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + personCoords.prefix + ' ' + personCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + manMadeObjectCoords.prefix + ' ' + manMadeObjectCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + titleCoords.prefix + ' ' + titleCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + identifierCoords.prefix + ' ' + identifierCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + timeSpanCoords.prefix + ' ' + timeSpanCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + placeCoords.prefix + ' ' + placeCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + typeCoords.prefix + ' ' + typeCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + creationCoords.prefix + ' ' + creationCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + informationObjectCoords.prefix + ' ' + informationObjectCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasDomainCoords.prefix + ' ' + hasDomainCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + pcarriedByCoords.prefix + ' ' + pcarriedByCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hasRangeCoords.prefix + ' ' + hasRangeCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + actorCoords.prefix + ' ' + actorCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + hadParticipantCoords.prefix + ' ' + hadParticipantCoords.uri + closeLine)\n",
|
|
|
- " output.write('@prefix ' + roleOfCoords.prefix + ' ' + roleOfCoords.uri + closeLine)\n",
|
|
|
- " output.write('\\n')\n"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 6,
|
|
|
- "metadata": {
|
|
|
- "tags": []
|
|
|
- },
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "filePrefix = 'data_'\n",
|
|
|
- "fileType = 'item'\n",
|
|
|
- "max_entries = 1000000000\n",
|
|
|
- "\n",
|
|
|
- "with open(import_dir + filePrefix + fileType + '.csv', newline=\"\") as csv_file, open(export_dir + filePrefix + fileType + '_event_creation_actor.ttl', 'w') as output:\n",
|
|
|
- " reader = csv.DictReader(csv_file)\n",
|
|
|
- " writeTTLHeader(output)\n",
|
|
|
- " first = True\n",
|
|
|
- " ii = 0\n",
|
|
|
- " for row in reader:\n",
|
|
|
- " # The index ii is used to process a limited number of entries for testing purposes\n",
|
|
|
- " ii = ii+1\n",
|
|
|
- " # Skip the first line as it carries info we don't want to triplify\n",
|
|
|
- " if(first):\n",
|
|
|
- " first = False\n",
|
|
|
- " continue\n",
|
|
|
- " \n",
|
|
|
- " #Autore della creazione del documento\n",
|
|
|
- " if(row['tipologia'] != 'carteggio'):\n",
|
|
|
- " e65placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + creationCoords.code + \">\"\n",
|
|
|
- " e65FplaceHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + creationCoords.code + \"F>\"\n",
|
|
|
- " e22placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \">\" \n",
|
|
|
- " PC14placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + pcarriedByCoords.code + \">\" \n",
|
|
|
- " E55placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + pcarriedByCoords.code + \"_\" + typeCoords.code + \">\" \n",
|
|
|
- " P11placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/P11\" + \">\" \n",
|
|
|
- " P11E55placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/P11\" + \"_\" + typeCoords.code + \">\"\n",
|
|
|
- " if(row['persona_tenutario'] != '' and row['tipologia'] != 'carteggio'):\n",
|
|
|
- " auth = row['persona_tenutario']\n",
|
|
|
- " authcode = re.sub('{\"nome\": .* ', '', auth)\n",
|
|
|
- " authcodeprefix= authcode.replace('IT-ASPO-AU00003-', '').replace('\"', '').replace('}', '').strip()\n",
|
|
|
- " e39placeHolder = personAuthCoords.prefix + authcodeprefix\n",
|
|
|
- " line = triple(e65placeHolder, hasDomainCoords.prefix, PC14placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(e65FplaceHolder, hasDomainCoords.prefix, PC14placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, labelCoords.prefix, \"\\\"Responsabilità della creazione\\\"\") + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, hasTypeCoords.prefix, pcarriedByCoords.prefix) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, hasRangeCoords.prefix, e39placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, roleOfCoords.prefix, E55placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(E55placeHolder, hasTypeCoords.prefix, typeCoords.prefix) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(E55placeHolder, labelCoords.prefix, \"\\\"Responsabile del documento\\\"\" ) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " if(row['persona_mano'] != '' and row['tipologia'] != 'carteggio'):\n",
|
|
|
- " auth = row['persona_mano']\n",
|
|
|
- " authcode = re.sub('{\"nome\": .* ', '', auth)\n",
|
|
|
- " authcodeprefix= authcode.replace('IT-ASPO-AU00003-', '').replace('\"', '').replace('}', '').strip()\n",
|
|
|
- " e39placeHolder = personAuthCoords.prefix + authcodeprefix\n",
|
|
|
- " line = triple(e65placeHolder, hasDomainCoords.prefix, PC14placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(e65FplaceHolder, hasDomainCoords.prefix, PC14placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, hasTypeCoords.prefix, pcarriedByCoords.prefix) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, hasRangeCoords.prefix, e39placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(PC14placeHolder, roleOfCoords.prefix, E55placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(E55placeHolder, hasTypeCoords.prefix, typeCoords.prefix) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(E55placeHolder, labelCoords.prefix, \"\\\"Mano\\\"\" ) + closeLine\n",
|
|
|
- " output.write(line) \n",
|
|
|
- " if(row['compagnia'] != '' and row['tipologia'] != 'carteggio'):\n",
|
|
|
- " auth = row['compagnia']\n",
|
|
|
- " authcode = re.sub('{nome: .* ', '', auth)\n",
|
|
|
- " authcodeprefix= authcode.replace('IT-ASPO-AU00003-', '').replace('\"', '').replace('}', '').strip()\n",
|
|
|
- " e39placeHolder = personAuthCoords.prefix + authcodeprefix\n",
|
|
|
- " line = triple(e65placeHolder, hadParticipantCoords.prefix, P11placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(e65FplaceHolder, hadParticipantCoords.prefix, P11placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(P11placeHolder, hasRangeCoords.prefix, e39placeHolder) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(P11placeHolder, hasTypeCoords.prefix, typeCoords.prefix) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- " line = triple(P11placeHolder, labelCoords.prefix, \"\\\"Compagnia\\\"\" ) + closeLine\n",
|
|
|
- " output.write(line)\n",
|
|
|
- "\n",
|
|
|
- " output.write('\\n')\n",
|
|
|
- " #\n",
|
|
|
- " #\n",
|
|
|
- " # Limit number of entries processed (if desired)\n",
|
|
|
- " if(ii>max_entries):\n",
|
|
|
- " break\n",
|
|
|
- " "
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
- "metadata": {
|
|
|
- "interpreter": {
|
|
|
- "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
|
|
|
- },
|
|
|
- "kernelspec": {
|
|
|
- "display_name": "Python 3.9.0 64-bit",
|
|
|
- "name": "python3"
|
|
|
- },
|
|
|
- "language_info": {
|
|
|
- "codemirror_mode": {
|
|
|
- "name": "ipython",
|
|
|
- "version": 3
|
|
|
- },
|
|
|
- "file_extension": ".py",
|
|
|
- "mimetype": "text/x-python",
|
|
|
- "name": "python",
|
|
|
- "nbconvert_exporter": "python",
|
|
|
- "pygments_lexer": "ipython3",
|
|
|
- "version": "3.9.0"
|
|
|
- },
|
|
|
- "metadata": {
|
|
|
- "interpreter": {
|
|
|
- "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- "nbformat": 4,
|
|
|
- "nbformat_minor": 2
|
|
|
-}
|