From b1cd0c476d953a8b04be5b123b692095289b3b40 Mon Sep 17 00:00:00 2001 From: Alessia Bardi Date: Fri, 9 Sep 2022 17:14:36 +0200 Subject: [PATCH 1/4] ROHub authoritative for w3id PIDs #7847 --- src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java | 1 + .../eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java | 3 +++ src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java index e9a93ea..50349aa 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java @@ -24,6 +24,7 @@ public class ModelConstants { public static final String EUROPE_PUBMED_CENTRAL_ID = "10|opendoar____::8b6dd7db9af49e67306feb59a8bdc52c"; public static final String PUBMED_CENTRAL_ID = "10|opendoar____::eda80a3d5b344bc40f3bc04f65b7a357"; public static final String ARXIV_ID = "10|opendoar____::6f4922f45568161a8cdf4ad2299f6d23"; + public static final String ROHUB_ID = "10|fairsharing_::1b69ebedb522700034547abc5652ffac"; public static final String OPENORGS_NAME = "OpenOrgs Database"; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java index 071cf53..6acb7b6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java @@ -53,6 +53,9 @@ public class IdentifierFactory implements Serializable { PID_AUTHORITY.put(PidType.arXiv, HashBiMap.create()); PID_AUTHORITY.get(PidType.arXiv).put(ARXIV_ID, "arXiv.org e-Print Archive"); + + PID_AUTHORITY.put(PidType.w3id, HashBiMap.create()); + PID_AUTHORITY.get(PidType.w3id).put(ROHUB_ID, "ROHub"); } /** diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java index 0a22e02..392bc02 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/PidType.java @@ -56,7 +56,7 @@ public enum PidType { * * Source: https://www.nlm.nih.gov/bsd/mms/medlineelements.html#pmc */ - pmc, handle, arXiv, nct, pdb, + pmc, handle, arXiv, nct, pdb, w3id, // Organization openorgs, corda, corda_h2020, GRID, mag_id, urn, From 5d93f5e69a398c3f45b6039da01fc367bf3c4f41 Mon Sep 17 00:00:00 2001 From: Alessia Bardi Date: Fri, 23 Sep 2022 12:03:58 +0200 Subject: [PATCH 2/4] ROHub as delegated authority for w3id --- .../dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java | 8 +++++++- .../dhp/schema/oaf/utils/IdentifierFactoryTest.java | 8 +++++++- .../eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java index 6acb7b6..32e8e39 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactory.java @@ -32,7 +32,8 @@ public class IdentifierFactory implements Serializable { public static final int ID_PREFIX_LEN = 12; /** - * Declares the associations PID_TYPE -> [DATASOURCE ID, NAME] considered authoritative for that PID_TYPE + * Declares the associations PID_TYPE -> [DATASOURCE ID, NAME] considered authoritative for that PID_TYPE. + * The id of the record (source_::id) will be rewritten as pidType_::id) */ public static final Map> PID_AUTHORITY = Maps.newHashMap(); @@ -61,6 +62,9 @@ public class IdentifierFactory implements Serializable { /** * Declares the associations PID_TYPE -> [DATASOURCE ID, PID SUBSTRING] considered as delegated authority for that * PID_TYPE. Example, Zenodo is delegated to forge DOIs that contain the 'zenodo' word. + * + * If a record with the same id (same pid) comes from 2 data sources, the one coming from a delegated source wins. E.g. Zenodo records win over those from Datacite. + * See also https://code-repo.d4science.org/D-Net/dnet-hadoop/pulls/187 and the class dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java */ public static final Map> DELEGATED_PID_AUTHORITY = Maps.newHashMap(); @@ -68,6 +72,8 @@ public class IdentifierFactory implements Serializable { DELEGATED_PID_AUTHORITY.put(PidType.doi, new HashMap<>()); DELEGATED_PID_AUTHORITY.get(PidType.doi).put(ZENODO_OD_ID, "zenodo"); DELEGATED_PID_AUTHORITY.get(PidType.doi).put(ZENODO_R3_ID, "zenodo"); + DELEGATED_PID_AUTHORITY.put(PidType.w3id, new HashMap<>()); + DELEGATED_PID_AUTHORITY.get(PidType.w3id).put(ROHUB_ID, "ro-id"); } /** diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java index 983ae6c..e21f57e 100644 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java +++ b/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/IdentifierFactoryTest.java @@ -68,12 +68,18 @@ class IdentifierFactoryTest { verifyIdentifier("publication_5.json", defaultID, false); } + @Test + void testCreateIdentifierForROHub() throws IOException { + verifyIdentifier( + "orp-rohub.json", "50|w3id________::afc7592914ae190a50570db90f55f9c2", true); + } + protected void verifyIdentifier(String filename, String expectedID, boolean md5) throws IOException { final String json = IOUtils.toString(getClass().getResourceAsStream(filename)); final Publication pub = OBJECT_MAPPER.readValue(json, Publication.class); String id = IdentifierFactory.createIdentifier(pub, md5); - + System.out.println(id); assertNotNull(id); assertEquals(expectedID, id); } diff --git a/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json new file mode 100644 index 0000000..c989394 --- /dev/null +++ b/src/test/resources/eu/dnetlib/dhp/schema/oaf/utils/orp-rohub.json @@ -0,0 +1 @@ +{"collectedfrom":[{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null}],"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1663926081966,"id":"50|w3id________::afc7592914ae190a50570db90f55f9c2","originalId":["50|fsh_____4119::afc7592914ae190a50570db90f55f9c2","https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca"],"pid":[{"value":"https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca","qualifier":{"classid":"w3id","classname":"w3id.org","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2019-03-27T15:15:22.22Z","dateoftransformation":"2019-04-17T16:04:20.586Z","extraInfo":[],"oaiprovenance":null,"processingchargeamount":null,"processingchargecurrency":null,"measures":null,"author":[{"fullname":"CNR-ISMAR","name":"","surname":"","rank":1,"pid":[],"affiliation":[]}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ecology","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"EOSC::RO-crate","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Using biological effects tools to define Good Environmental Status under the European Union Marine Strategy Framework Directive","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[{"value":"2018-06-20T11:21:46Z","qualifier":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"description":[{"value":"The use of biological effects tools offer enormous potential to meet the challenges outlined by the European Union Marine Strategy Framework Directive (MSFD) whereby Member States are required to develop a robust set of tools for defining 11 qualitative descriptors of Good Environmental Status (GES), such as demonstrating that \"Concentrations of contaminants are at levels not giving rise to pollution effects\" (GES Descriptor 8). This paper discusses the combined approach of monitoring chemical contaminant levels, along side biological effect measurements relating to the effect of pollutants, for undertaking assessments of GES across European marine regions. We outline the minimum standards that biological effects tools should meet if they are to be used for defining GES in relation to Descriptor 8 and describe the current international initiatives underway to develop assessment criteria for these biological effects techniques. Crown Copyright (C) 2010 Published by Elsevier Ltd. All rights reserved.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":null,"publisher":{"value":"PoznaƄ Supercomputing and Networking Center","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Generation Service","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":{"classid":"RO-crate","classname":"RO-crate","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"coverage":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes","openAccessRoute":null},"instancetype":{"classid":"other research product","classname":"other research product","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null},"url":null,"distributionlocation":null,"collectedfrom":{"key":"10|fairsharing_::1b69ebedb522700034547abc5652ffac","value":"ROHub","dataInfo":null},"pid":[{"value":"https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca","qualifier":{"classid":"w3id","classname":"w3id.org","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"alternateIdentifier":[],"dateofacceptance":null,"processingchargeamount":null,"processingchargecurrency":null,"refereed":{"classid":"UNKNOWN","classname":"Unknown","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"measures":null}],"eoscifguidelines":null,"contactperson":[],"contactgroup":[],"tool":[]} From 952be6b30d1ee9decfe4197cccaca90db9613aee Mon Sep 17 00:00:00 2001 From: Alessia Bardi Date: Mon, 26 Sep 2022 11:25:25 +0200 Subject: [PATCH 3/4] fixed typo in relclass --- src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java | 2 +- src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java index 50349aa..e47ae97 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java @@ -119,7 +119,7 @@ public class ModelConstants { public static final String COMPILES = "Compiles"; public static final String IS_COMPILED_BY = "IsCompiledBy"; public static final String DESCRIBES = "Describes"; - public static final String IS_DESCRIBE_DBY = "IsDescribedBy"; + public static final String IS_DESCRIBED_BY = "IsDescribedBy"; public static final String IS_METADATA_FOR = "IsMetadataFor"; public static final String IS_METADATA_OF = "IsMetadataOf"; public static final String HAS_ASSOCIATION_WITH = "HasAssociationWith"; diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java index 1aa0d8f..c7a24b6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java @@ -125,7 +125,7 @@ public class ModelSupport { set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_RELATED_TO, IS_RELATED_TO); set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_COMPILED_BY, COMPILES); - set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_DESCRIBE_DBY, DESCRIBES); + set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_DESCRIBED_BY, DESCRIBES); set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_METADATA_FOR, IS_METADATA_OF); set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, HAS_ASSOCIATION_WITH, HAS_ASSOCIATION_WITH); set(relationInverseMap, RESULT_RESULT, RELATIONSHIP, IS_REQUIRED_BY, REQUIRES); From 0680e76506989167f5479f1e8b2caa0557460005 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 27 Sep 2022 14:22:59 +0200 Subject: [PATCH 4/4] bumped version, updated CHANGES --- CHANGES.md | 3 ++- pom.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8387690..2cb900b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,9 +4,10 @@ | **Version** | **Changes** | **Readiness** | |-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------| +| 3.15.0 | [Graph model]
  • added w3id as PID type, with ROHub as authority.
    • | beta | | 3.14.0 | [Graph model]
      • introduced specific type for result.subject
        • | beta | | 2.13.0 | [Scholexplorer]
          • update swagger annotation jar version to be compatible with new implementation of openAPI ui
            • | beta | -| 2.12.1 | [Graph model]
              • added field oafEntity.eoscifguidelines
                • | beta | +| 2.12.1 | [Graph model]
                  • added field oafEntity.eoscifguidelines
                    • | production | | 2.12.0 | [Graph model]
                      • Introducing EOSC Services as datasources
                        • | production | | 2.11.33 | [Scholexplorer]
                          • Moved Scholix API Data model into dhp-schemas
                          • implementation of the compareTo method on Scholix objects and all model properties
                          • Unit Test to verify that compareTo works on different case
                            • | production | | 2.10.31 | [Minor]
                              NPE checks | production | diff --git a/pom.xml b/pom.xml index b4a6ff9..6982a82 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ eu.dnetlib.dhp dhp-schemas jar - 3.14.1-SNAPSHOT + 3.15.0-SNAPSHOT