|
@@ -0,0 +1,294 @@
|
|
|
+{
|
|
|
+ "cells": [
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 13,
|
|
|
+ "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"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 14,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "import_dir = '/Users/federicaspinelli/Google Drive/OVI-CNR/CSV/OVI/'\n",
|
|
|
+ "export_dir = '/Users/federicaspinelli/Google Drive/OVI-CNR/RDF/OVI/'"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 15,
|
|
|
+ "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",
|
|
|
+ "# Repositories\n",
|
|
|
+ "museoCoords = RDFcoords('<http://palazzopretorio.comune.prato.it/it/le-opere/alcuni-capolavori/>', 'mpp:')\n",
|
|
|
+ "autCoords = RDFcoords('<http://palazzopretorio.comune.prato.it/it/opere/autori/>', 'aut:')\n",
|
|
|
+ "cidocCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/>', 'crm:')\n",
|
|
|
+ "aatCoords = RDFcoords('<http://vocab.getty.edu/aat/>', 'aat:')\n",
|
|
|
+ "nsCoords = RDFcoords('<http://www.w3.org/1999/02/22-rdf-syntax-ns#>', 'rdf:')\n",
|
|
|
+ "schemaCoords = RDFcoords('<http://www.w3.org/2000/01/rdf-schema#>', 'rdfs:')\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/CIDOC Predicates\n",
|
|
|
+ "hasTypeCoords = RDFcoords('<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>', 'tp:')\n",
|
|
|
+ "hasTypePCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P2_has_type>', 'te:')\n",
|
|
|
+ "carriesCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P128_carries>', 'ca:')\n",
|
|
|
+ "identifiedByCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P1_is_identified_by>', 'ib:')\n",
|
|
|
+ "labelCoords = RDFcoords('<http://www.w3.org/2000/01/rdf-schema#label>', 'lb:')\n",
|
|
|
+ "wasBroughtCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P92i_was_brought_into_existence_by>', 'wb:')\n",
|
|
|
+ "carriedByCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P14_carried_out_by>', 'cb:')\n",
|
|
|
+ "hasAlternativeFormCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P139_has_alternative_form>', 'af:')\n",
|
|
|
+ "hasNoteCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P3_has_note>', 'no:')\n",
|
|
|
+ "hasTypeNCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P3.1_has_type>', 'tn:')\n",
|
|
|
+ "hasLanguageCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P72_has_language>', 'hl:')\n",
|
|
|
+ "documentsCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P70_documents>', 'ds:')\n",
|
|
|
+ "hasComponentCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/P148_has_component>', 'hc:')\n",
|
|
|
+ "\n",
|
|
|
+ "# CIDOC Objects\n",
|
|
|
+ "manMadeObjectCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E22_Man-Made_Object>', 'mo:', 'E22')\n",
|
|
|
+ "informationObjectCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object>', 'io:', 'E73')\n",
|
|
|
+ "titleCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E35_Title>', 'ti:' ,'E35')\n",
|
|
|
+ "placeAppellationCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E44_Place_appellation>', 'pa:', 'E44')\n",
|
|
|
+ "identifierCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E42_Identifier>', 'id:', 'E42')\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",
|
|
|
+ "personCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E21_Person>', 'ps:', 'E21')\n",
|
|
|
+ "stringCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E62_String>', 'sr:', 'E62')\n",
|
|
|
+ "linguisticObjCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E33_Linguistic_Object>', 'lj:', 'E33')\n",
|
|
|
+ "languageCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E56_Language>', 'ln:', 'E56')\n",
|
|
|
+ "appellationCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E41_appellation>', 'ap:', 'E41')\n",
|
|
|
+ "propositionalObjCoords = RDFcoords('<http://www.cidoc-crm.org/cidoc-crm/E89_Propositional_Object>', 'pj:', 'E89')\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 16,
|
|
|
+ "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": 17,
|
|
|
+ "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 ' + hasTypePCoords.prefix + ' ' + hasTypePCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + manMadeObjectCoords.prefix + ' ' + manMadeObjectCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + carriesCoords.prefix + ' ' + carriesCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + informationObjectCoords.prefix + ' ' + informationObjectCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + identifiedByCoords.prefix + ' ' + identifiedByCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + titleCoords.prefix + ' ' + titleCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + labelCoords.prefix + ' ' + labelCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + identifierCoords.prefix + ' ' + identifierCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + wasBroughtCoords.prefix + ' ' + wasBroughtCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + typeCoords.prefix + ' ' + typeCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + carriedByCoords.prefix + ' ' + carriedByCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + personCoords.prefix + ' ' + personCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + hasAlternativeFormCoords.prefix + ' ' + hasAlternativeFormCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + hasNoteCoords.prefix + ' ' + hasNoteCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + hasTypeNCoords.prefix + ' ' + hasTypeNCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + stringCoords.prefix + ' ' + stringCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + linguisticObjCoords.prefix + ' ' + linguisticObjCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + languageCoords.prefix + ' ' + languageCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + hasLanguageCoords.prefix + ' ' + hasLanguageCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + documentsCoords.prefix + ' ' + documentsCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + appellationCoords.prefix + ' ' + appellationCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + propositionalObjCoords.prefix + ' ' + propositionalObjCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + hasComponentCoords.prefix + ' ' + hasComponentCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + museoCoords.prefix + ' ' + museoCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + cidocCoords.prefix + ' ' + cidocCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + aatCoords.prefix + ' ' + aatCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + schemaCoords.prefix + ' ' + schemaCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + nsCoords.prefix + ' ' + nsCoords.uri + closeLine)\n",
|
|
|
+ " output.write('@prefix ' + autCoords.prefix + ' ' + autCoords.uri + closeLine)\n",
|
|
|
+ "\n",
|
|
|
+ " output.write('\\n')\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 18,
|
|
|
+ "metadata": {
|
|
|
+ "tags": []
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "filePrefix = 'Biblio'\n",
|
|
|
+ "fileType = 'Datini'\n",
|
|
|
+ "max_entries = 10000000000000000\n",
|
|
|
+ "\n",
|
|
|
+ "def get_text(sigla):\n",
|
|
|
+ " text_file = open('/Users/federicaspinelli/Google Drive/OVI-CNR/CSV/OVI/testi_ovi.csv', newline=\"\")\n",
|
|
|
+ " reader = csv.DictReader(text_file)\n",
|
|
|
+ " for row in reader:\n",
|
|
|
+ " if row['sigla'] == sigla:\n",
|
|
|
+ " return [row['testo'], row['testo_lemmatizzato']]\n",
|
|
|
+ "\n",
|
|
|
+ "with open(import_dir + filePrefix + fileType + '_IDAspo.csv', newline=\"\") as csv_file, open(export_dir + filePrefix + fileType + '_trascr.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+0\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",
|
|
|
+ " if(row['num_ovi'] != '2'):\n",
|
|
|
+ " E73placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + informationObjectCoords.code + \"_OVI\"\n",
|
|
|
+ " E33placeHolder = '<http://datini.archiviodistato.prato.it/la-ricerca/scheda/' + row['id'] + '/E33_OVI>'\n",
|
|
|
+ "\n",
|
|
|
+ " else: \n",
|
|
|
+ " E73placeHolder = \"<http://datini.archiviodistato.prato.it/la-ricerca/scheda/\" + row['id'] + \"/\" + informationObjectCoords.code + \"_OVI_2\"\n",
|
|
|
+ " E33placeHolder = '<http://datini.archiviodistato.prato.it/la-ricerca/scheda/' + row['id'] + '/E33_OVI_2>'\n",
|
|
|
+ "\n",
|
|
|
+ " datplaceHolder = '<http://datini.archiviodistato.prato.it/la-ricerca/scheda/' + row['id'] + '>'\n",
|
|
|
+ " sigla = row['sigla']\n",
|
|
|
+ "\n",
|
|
|
+ " #E22 P128 E73\n",
|
|
|
+ " line = triple(datplaceHolder,\n",
|
|
|
+ " cidocCoords.prefix + 'P128_carries',\n",
|
|
|
+ " E73placeHolder + '>') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ " line = triple(E73placeHolder + '>',\n",
|
|
|
+ " nsCoords.prefix + 'type',\n",
|
|
|
+ " cidocCoords.prefix + 'E73_Information_Object') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ " #line = triple(E73placeHolder,\n",
|
|
|
+ " # schemaCoords.prefix + 'label',\n",
|
|
|
+ " # '\\\"' + row['titolo'] + '\\\"') + closeLine\n",
|
|
|
+ " #output.write(line)\n",
|
|
|
+ " #line = triple(E73placeHolder,\n",
|
|
|
+ " # cidocCoords.prefix + 'P2_has_type',\n",
|
|
|
+ " # '\\\"Testo Lemmatizzato\\\"') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ "\n",
|
|
|
+ " #E22 P128 E33\n",
|
|
|
+ " line = triple(datplaceHolder,\n",
|
|
|
+ " cidocCoords.prefix + 'P128_carries',\n",
|
|
|
+ " E33placeHolder + '>') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ " line = triple(E33placeHolder + '>',\n",
|
|
|
+ " nsCoords.prefix + 'type',\n",
|
|
|
+ " cidocCoords.prefix + 'E33_Linguistic_Object') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ " line = triple(E33placeHolder + '>',\n",
|
|
|
+ " schemaCoords.prefix + 'label',\n",
|
|
|
+ " '\\\"Trascrizione di ' + row['titolo'] + '\\\"') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ " line = triple(E33placeHolder + '>',\n",
|
|
|
+ " cidocCoords.prefix + 'P2_has_type',\n",
|
|
|
+ " '\\\"Trascrizione\\\"') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ "\n",
|
|
|
+ " testo = get_text(sigla)\n",
|
|
|
+ " testo_lem = testo[1].replace('\"', \"'\")\n",
|
|
|
+ " line = triple(E73placeHolder + '>',\n",
|
|
|
+ " cidocCoords.prefix + 'P190_has_symbolic_content',\n",
|
|
|
+ " '\\\"' + testo_lem + '\\\"') + closeLine\n",
|
|
|
+ " output.write(line)\n",
|
|
|
+ "\n",
|
|
|
+ " trascrizione = testo[0].replace('\"', \"'\")\n",
|
|
|
+ " line = triple(E33placeHolder + '>',\n",
|
|
|
+ " cidocCoords.prefix + 'P190_has_symbolic_content',\n",
|
|
|
+ " '\\\"' + trascrizione + '\\\"') + 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
|
|
|
+}
|