diff --git a/src/zbmath_rest2oai/getAsXml.py b/src/zbmath_rest2oai/getAsXml.py index 5dfc7388..948939c0 100644 --- a/src/zbmath_rest2oai/getAsXml.py +++ b/src/zbmath_rest2oai/getAsXml.py @@ -69,6 +69,14 @@ def add_software(result): return zbmath_url.startswith("https://zbmath.org/software/") +def datacite_records(result: dict) -> bool: + links = result.get("links", []) + for link in links: + if link.get("type") in ("doi", "arxiv") and link.get("identifier"): + return True + return False + + def extract_tags(result): tags = [] for msc in result.get('msc', []): @@ -88,6 +96,9 @@ def extract_tags(result): if add_software(result): tags.append('openaire') + if datacite_records(result): + tags.append('datacite') + return tags diff --git a/src/zbmath_rest2oai/get_sets.py b/src/zbmath_rest2oai/get_sets.py index 6d1ea865..9121ccf0 100644 --- a/src/zbmath_rest2oai/get_sets.py +++ b/src/zbmath_rest2oai/get_sets.py @@ -7,10 +7,17 @@ def get_sets(): headers = {'Accept': 'application/json'} r = requests.get(URL, headers=headers) results = r.json()['result'] - mscs = {'JFM': 'JFM: Jahrbuch für Mathematik', - 'openaire': 'openaire Required set for OpenAIRE, cf.' - + 'https://guidelines.openaire.eu/en/latest/literature' - + '/use_of_oai_pmh.html'} + mscs = { + 'JFM': 'JFM: Jahrbuch für Mathematik', + 'openaire': ('openaire Required set for OpenAIRE, cf.' + 'https://guidelines.openaire.eu/en/latest/literature' + '/use_of_oai_pmh.html'), + 'datacite': ( + 'Datacite: for metadata supported with Doi and ' + 'arXiv identifiers' + ) + } + for result in results: code = result['code'][:2] mscs[code] = code + '-XX:' + result['short_title'] diff --git a/test/test_extract_tags.py b/test/test_extract_tags.py index 85cac908..89896f61 100644 --- a/test/test_extract_tags.py +++ b/test/test_extract_tags.py @@ -12,7 +12,7 @@ def test_jfm_doc(): 'https://api.zbmath.org/v1/document/_structured_search?page=0&results_per_page=10&zbmath%20id=2500495', headers=headers) real_tags = extract_tags(r.json()['result'][0]) - assert real_tags == ['11', 'JFM'] + assert real_tags == ['11', 'JFM', 'datacite'] @staticmethod def test_software(): diff --git a/test/test_get_sets.py b/test/test_get_sets.py index e4142544..3140293d 100644 --- a/test/test_get_sets.py +++ b/test/test_get_sets.py @@ -7,5 +7,5 @@ class PlainXmlTest(unittest.TestCase): @staticmethod def test_getSets(): real_sets = get_sets() - assert len(real_sets) == 65 + assert len(real_sets) == 66 assert real_sets['14'] == '14-XX:Algebraic geometry'