summaryrefslogtreecommitdiffstats
path: root/python/fatcat_tools/importers/datacite.py
Commit message (Collapse)AuthorAgeFilesLines
* datacite: pass in doi into factored out methodMartin Czygan2020-01-081-2/+3
|
* datacite: factor out contributor handlingMartin Czygan2020-01-081-80/+103
| | | | | | | Use values from: * attributes.creators[] * attributes.contributors[]
* datacite: catch type mismatch in language detectionMartin Czygan2020-01-081-3/+2
|
* datacite: name extra.month, extra.release_monthMartin Czygan2020-01-081-1/+3
|
* datacite: mark additional files as stubMartin Czygan2020-01-081-0/+4
|
* datacite: CCDC are entries, mostlyMartin Czygan2020-01-081-0/+4
|
* datacite: use more specific release_type, if possibleMartin Czygan2020-01-081-0/+6
|
* datacite: ignore certain namesMartin Czygan2020-01-081-0/+6
|
* datacite: over 3% records have the same title: stubMartin Czygan2020-01-081-0/+7
| | | | | | | | | | The GBIF (https://www.gbif.org/) deposits most records under the titles: * 599243 GBIF Occurrence Download * 41176 Occurrence Download Mark them as "stub" for the moment (https://guide.fatcat.wiki/entity_release.html#release_type-vocabulary).
* datacite: fill a few more release_type gapsMartin Czygan2020-01-081-17/+18
| | | | | | | | | | | | | | | | | | * citeproc: http://docs.citationstyles.org/en/stable/specification.html#appendix-iii-types * resourceTypeGeneral: https://schema.datacite.org/meta/kernel-4.0/doc/DataCite-MetadataKernel_v4.0.pdf#page=32 * resourceType: uncontrolled, over 170000 distinct values, frequent: null, Dataset, JournalArticle, PGRFA Material, Journal Article, Dataset/UNITE Species Hypothesis, ... General frequency: * "attributes.types": 18210075, * "attributes.types.ris": 18058890, * "attributes.types.bibtex": 18058888, * "attributes.types.citeproc": 18058890, * "attributes.types.schemaOrg": 18058929, * "attributes.types.resourceType": 12737988, * "attributes.types.resourceTypeGeneral": 16576139,
* datacite: adding datacite-specific extra metadataMartin Czygan2020-01-071-0/+28
| | | | | | | | | | | | | * attributes.metadataVersion * attributes.schemaVersion * attributes.version (source dependent values, follows suggestions in https://schema.datacite.org/meta/kernel-4.3/doc/DataCite-MetadataKernel_v4.3.pdf#page=26, but values vary) Furthermore: * attributes.types.resourceTypeGeneral * attributes.types.resourceType
* datacite: apply pylint suggestionsMartin Czygan2020-01-071-8/+10
|
* datacite: fix typosMartin Czygan2020-01-071-1/+1
|
* datacite: set release_stage to published by defaultMartin Czygan2020-01-061-4/+5
| | | | | | Set to `None` only if there is no publisher yet. Docs: https://support.datacite.org/docs/doi-states
* datacite: month field should be top-levelMartin Czygan2020-01-061-2/+2
|
* datacite: include month in extraMartin Czygan2020-01-061-0/+2
| | | | | > include release_month as a top-level extra field [...] to auto-populate the schema field from that
* datacite: clean abstracts, use unknown value tokensMartin Czygan2020-01-061-4/+26
| | | | | | | | Datacite defines placeholders for unknown values: * https://support.datacite.org/docs/schema-values-unknown-information-v43 Clean abstracts.
* datacite: clean abstract as wellMartin Czygan2020-01-061-1/+1
|
* datacite: filter out 'Cites' relation as wellMartin Czygan2020-01-061-1/+1
|
* datacite: always include "datacite" key in extraMartin Czygan2020-01-041-2/+2
| | | | | | > always include extra values for the respective DOI registrars (datacite, crossref, jalc), even if they are empty ({}), to be used as a flag so we know which DOI registrar supplied the metadata.
* datacite: use normal.clean_doiMartin Czygan2020-01-031-11/+1
|
* datacite: parse_datacite_dates returns monthMartin Czygan2020-01-031-10/+35
| | | | As [...] we will soon add support for release_month field in the release schema.
* datacite: prepare release_month (stub)Martin Czygan2020-01-031-10/+10
|
* datacite: lowercase only onceMartin Czygan2020-01-031-3/+4
|
* datacite: remove --lang-detect flagMartin Czygan2020-01-031-11/+6
| | | | Estimated time for a single call is in the order of 50ms.
* datacite: address raw_name index form commentMartin Czygan2020-01-021-0/+43
| | | | | | | | | > The convention for display_name and raw_name is to be how the name would normally be printed, not in index form (surname comma given_name). So we might need to un-encode names like "Tricart, Pierre". Use an additional `index_form_to_display_name` function to convert index from to display form, heuristically.
* datacite: add two more skipable tokensMartin Czygan2020-01-021-1/+1
|
* datacite: names can be 'Unav', tooMartin Czygan2020-01-021-1/+4
|
* datacite: avoid more None valuesMartin Czygan2020-01-011-4/+4
|
* datacite: address 'Unpublished' publisherMartin Czygan2019-12-311-9/+10
|
* datacite: ensure name schema is definedMartin Czygan2019-12-311-1/+2
|
* datacite: fix typoMartin Czygan2019-12-311-1/+1
|
* datacite: isascii was added in 3.7, onlyMartin Czygan2019-12-311-1/+7
|
* datacite: skip non-ascii doi for nowMartin Czygan2019-12-311-0/+4
| | | | | | Example of a non-ascii doi: * https://doi.org/10.13125/américacrítica/3017
* datacite: clean doiMartin Czygan2019-12-311-1/+13
| | | | | | | address issue with EN DASH DOI. > "external identifier doesn't match required pattern for a DOI (expected, eg, '10.1234/aksjdfh'): 10.25513/1812-3996.2017.1.34–42"
* datacite: update docsMartin Czygan2019-12-311-9/+9
|
* datacite: perform additional checks on contribMartin Czygan2019-12-301-3/+9
|
* datacite: check for empty title after cleanMartin Czygan2019-12-291-2/+5
|
* datacite: update docs with observed valuesMartin Czygan2019-12-291-1/+3
|
* datacite: page number misses are too commonMartin Czygan2019-12-281-1/+2
| | | | | | Should be a level debug, not info. Examples: E675, n/a, 15D.2.1, 15D.2.1, A.1E.1, A.1E.1, ...
* datacite: suppress debug-like language lookup miss messageMartin Czygan2019-12-281-1/+3
|
* datacite: treat untyped names as peopleMartin Czygan2019-12-281-1/+1
|
* datacite: include container_name top level key in extraMartin Czygan2019-12-281-7/+21
|
* datacite: use clean on field valuesMartin Czygan2019-12-281-2/+28
|
* datacite: include doi in error messagesMartin Czygan2019-12-281-8/+8
|
* datacite: limit abstract lengthMartin Czygan2019-12-281-0/+6
|
* datacite: use iso 639-1 codesMartin Czygan2019-12-281-7/+4
|
* address first round of MR14 commentsMartin Czygan2019-12-281-148/+319
| | | | | | | | | | | | | * add missing langdetect * use entity_to_dict for json debug output * factor out code for fields in function and add table driven tests * update citeproc types * add author as default role * add raw_affiliation * include relations from datacite * remove url (covered by doi already) Using yapf for python formatting.
* datacite: move common date patterns out of the loopMartin Czygan2019-12-281-3/+4
| | | | Additionally, try the unspecific (%Y) pattern last.
* improve datacite field mapping and importMartin Czygan2019-12-281-41/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current version succeeded to import a random sample of 100000 records (0.5%) from datacite. The --debug (write JSON to stdout) and --insert-log-file (log batch before committing to db) flags are temporary added to help debugging. Add few unit tests. Some edge cases: a) Existing keys without value requires a slightly awkward: ``` titles = attributes.get('titles', []) or [] ``` b) There can be 0, 1, or more (first one wins) titles. c) Date handling is probably not ideal. Datacite has a potentiall fine grained list of dates. The test case (tests/files/datacite_sample.jsonl) refers to https://ssl.fao.org/glis/doi/10.18730/8DYM9, which has date (main descriptor) 1986. The datacite record contains: 2017 (publicationYear, probably the year of record creation with reference system), 1978-06-03 (collected, e.g. experimental sample), 1986 ("Accepted"). The online version of the resource knows even one more date (2019-06-05 10:14:43 by WIEWS update).