<aside> ⚠️ Oggi è venerdì 17!

</aside>

Da fare:

Books e proceedings in OpenAlex

Books

Confermato che OpenAlex non supporta ISBN. I libri vengono rappresentati come Works.

Dall’API, sappiamo che in OpenAlex ci sono 3.548.682 di libri che non hanno né DOI, né PMCID, né PMID. Tra questi, da quanto ho visto, tutti hanno, oltre all’OpenAlex ID, solo il MAG ID (che è probabilmente la ragione per cui sono stati ingeriti in OpenAlex, a questo punto). Richiesta API: https://api.openalex.org/works?filter=type:book,has_doi:false,has_pmcid:false,has_pmid:false&select=ids,title.

Di seguito i tipi di risorsa che sono rappresentati come Work in OpenAlex, e i relativi conteggi, per un totale di 246.122.413 entità di tipo Work.

https://api.openalex.org/works?group_by=type

In Meta (API) abbiamo dei books che non sono stati mappati nonostante abbiano un DOI e siano rappresentati, insieme al loro DOI, in OpenAlex. Però sono solo 175 e si tratta ovviamente di risorse che dovrebbero essere nel CSV ma sono solo nell’RDF.

Vedi ad esempio https://opencitations.net/meta/api/v1/metadata/omid:br/0619063975 che dovrebbe essere mappato a https://api.openalex.org/works/doi:10.1007/978-94-009-8434-9. Insomma, se consideriamo che dei libri non mappati 2.409.025 non hanno altri ID oltre a OMID e che OpenAlex non tiene traccia degli ISBN, non stupisce che i libri siano tra i tipi di risorse per cui abbiamo un numero alto di non-mapped.

Proceedings

Rappresentati come Sources. Possono anche avere solo OpenAlex ID, anzi guarda quanto è comune per le entità di type conference che non hanno ISSN: https://api.openalex.org/sources?filter=type:conference,has_issn:false&select=ids,display_name

Le entità con type “conference” sono molto poche: 10794 totali, 10228 di queste senza ISSN (dati da API). In Meta, per fabio:AcademicProceedings ci sono 5.408.662 entità (dati da query SPARQL). Di queste, 5.058.481 risultano non mappate (però da RDF + CSV). Di seguito i tipi di risorsa che sono rappresentati come Source in OpenAlex, e i relativi conteggi, per un totale di 248.650 entità di tipo Source.

https://api.openalex.org/sources?group_by=type

La maggior parte dei proceedings non sono mappabili per assenza di altri ID. Il grosso dei proceedings con anche altri ID deriva da Zenodo, che verosimilmente non è (ancora?) ingerito in OpenAlex.

Problemi

Impossibile unificare tutti i file .part in un colpo solo (errore di memoria??).

C:\\Users\\media\\Desktop\\omid-openalex\\.venv\\Scripts\\python.exe C:\\Users\\media\\Desktop\\omid-openalex\\analytics\\multi_map_categories.py 
[########################################] | 100% Completed | 3hr 27m
[###############################         ] | 79% Completed | 46m 45sProcess Process-13:
Traceback (most recent call last):
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\process.py", line 315, in _bootstrap
    self.run()
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\\Program Files\\Python39\\lib\\concurrent\\futures\\process.py", line 237, in _process_worker
    call_item = call_queue.get(block=True)
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\queues.py", line 103, in get
    res = self._recv_bytes()
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\connection.py", line 221, in recv_bytes
    buf = self._recv_bytes(maxlength)
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\connection.py", line 323, in _recv_bytes
    return self._get_more_data(ov, maxsize)
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\connection.py", line 342, in _get_more_data
    assert left > 0
AssertionError
[################################        ] | 80% Completed | 47m 2sTraceback (most recent call last):
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\queues.py", line 247, in _feed
    send_bytes(obj)
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\connection.py", line 205, in send_bytes
    self._send_bytes(m[offset:offset + size])
  File "C:\\Program Files\\Python39\\lib\\multiprocessing\\connection.py", line 285, in _send_bytes
    ov, err = _winapi.WriteFile(self._handle, buf, overlapped=True)
OSError: [WinError 1450] Risorse di sistema insufficienti per completare il servizio richiesto
[################################        ] | 81% Completed | 65m 43s
Traceback (most recent call last):
  File "C:\\Users\\media\\Desktop\\omid-openalex\\analytics\\multi_map_categories.py", line 28, in <module>
    unify_part_files(inp_path=os.path.join(mm_works_part_path, '*.part'), out_path='E:/multi_mapped_full_metadata/works.json')
  File "C:\\Users\\media\\Desktop\\omid-openalex\\analytics\\helper.py", line 297, in unify_part_files
    combined_data = bag.compute()  # Trigger the computation and combine all the data (takes a while)
  File "C:\\Users\\media\\Desktop\\omid-openalex\\.venv\\lib\\site-packages\\dask\\base.py", line 342, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "C:\\Users\\media\\Desktop\\omid-openalex\\.venv\\lib\\site-packages\\dask\\base.py", line 628, in compute
    results = schedule(dsk, keys, **kwargs)
  File "C:\\Program Files\\Python39\\lib\\concurrent\\futures\\process.py", line 681, in submit
    raise BrokenProcessPool(self._broken)
concurrent.futures.process.BrokenProcessPool: A child process terminated abruptly, the process pool is not usable anymore

Process finished with exit code 1